ModificationFunctionMapping (EntityTypeMapping)
В модели EDM элемент ModificationFunctionMapping, при условии, что его дочерним элементом является EntityTypeMapping, определяет функции схемы хранения, которые выполняют обработку изменений для EntityType. Элемент ModificationFunctionMapping содержит элементы DeleteFunction, InsertFunction и UpdateFunction. Каждый из этих функциональных элементов содержит элемент FunctionName, который сопоставляется с хранимой процедурой в модели хранения.
Функции, заданные в элементе ModificationFunctionMapping, обрабатывают изменения EntityType. В этих экземплярах элемент ModificationFunctionMapping содержится внутри элемента EntityTypeMapping, который, в свою очередь, содержится внутри элемента EntitySetMapping. В этом случае ассоциации обрабатываются в процессе выполнения операций над сущностями (операций создания, изменения и удаления).
Примечание. |
---|
Функции, заданные в элементе ModificationFunctionMapping, могут также быть сопоставлены с хранимыми процедурами, которые создают или удаляют экземпляры ассоциаций между существующими сущностями. В этих экземплярах элемент ModificationFunctionMapping содержится внутри элемента AssociationSetMapping. Дополнительные сведения см. в разделах Сопоставление набора ассоциаций с хранимыми процедурами (платформа Entity Framework) и ModificationFunctionMapping (AssociationSetMapping). |
Пример
Следующий пример показывает, каким образом в элементе ModificationFunctionMapping сопоставляются функциональные элементы с хранимыми процедурами, которые обрабатывают изменения для EntityType. В этом примере элемент ModificationFunctionMapping сопоставляется с функциями для изменения сущности SalesOrderDetail
, определяемой синтаксисом TypeName="AdventureWorksModel.SalesOrderDetail"
.
Для использования такого сопоставления все три функции (вставки, обновления и удаления) для сущностей SalesOrderDetail
должны быть сопоставлены с хранимыми процедурами. Каждая из трех функций использует следующие элементы для выполнения сопоставления.
Элемент FunctionName в каждом из элементов Function идентифицирует соответствующую хранимую процедуру в схеме хранения при использовании следующего синтаксиса:
FunctionName="AdventureWorksModel.Store.CreateSalesOrderDetail"
.Элементы ScalarProperty в каждом из элементов Function сопоставляют свойства целевой сущности с параметрами хранимой процедуры.
Элементы AssociationEnd в каждом из элементов Function указывают сведения об обновлении ассоциаций согласно требованиям модели данных и соответствующие связи по внешнему ключу в модели хранения. Элемент AssociationEnd внутри EntityTypeMapping дает возможность рассматривать связь как ссылку или внешний ключ, определенный для сущности. Дополнительные сведения см. в разделе Поддержка хранимых процедур (платформа Entity Framework).
Следующий пример показывает полную декларацию элемента ModificationFunctionMapping. Эту схему можно создать при помощи средств проектирования платформы Entity Framework. Дополнительные сведения см. в разделе Пошаговое руководство: сопоставление сущности с хранимыми процедурами.
<ModificationFunctionMapping >
<InsertFunction
FunctionName="AdventureWorksModel.Store.CreateSalesOrderDetail">
<ScalarProperty Name="CarrierTrackingNumber"
ParameterName="CarrierTrackingNumber" Version="Current"/>
<ScalarProperty Name="OrderQty" ParameterName="OrderQty"
Version="Current"/>
<ScalarProperty Name="ProductID" ParameterName="ProductID"
Version="Current"/>
<ScalarProperty Name="SpecialOfferID"
ParameterName="SpecialOfferID" Version="Current"/>
<ScalarProperty Name="UnitPrice" ParameterName="UnitPrice"
Version="Current"/>
<ScalarProperty Name="UnitPriceDiscount"
ParameterName="UnitPriceDiscount" Version="Current"/>
<ScalarProperty Name="rowguid" ParameterName="rowguid" Version="Current"/>
<ScalarProperty Name="ModifiedDate"
ParameterName="ModifiedDate" Version="Current"/>
<AssociationEnd
AssociationSet="FK_SalesOrderDetail_SalesOrderHeader_SalesOrderID"
From="SalesOrderDetail" To="SalesOrderHeader">
<ScalarProperty Name="SalesOrderID"
ParameterName="SalesOrderID" />
</AssociationEnd>
<ResultBinding ColumnName="SalesOrderDetailID"
Name="SalesOrderDetailID" />
<ResultBinding ColumnName="LineTotal" Name="LineTotal" />
</InsertFunction>
<UpdateFunction
FunctionName="AdventureWorksModel.Store.UpdateSalesOrderDetail" >
<ScalarProperty Name="OrderQty" ParameterName="OrderQty" Version="Current"/>
<ScalarProperty Name="SalesOrderDetailID"
ParameterName="SalesOrderDetailID" Version="Current"/>
<AssociationEnd
AssociationSet="FK_SalesOrderDetail_SalesOrderHeader_SalesOrderID"
From="SalesOrderDetail" To="SalesOrderHeader">
<ScalarProperty Name="SalesOrderID"
ParameterName="SalesOrderID" Version="Current" />
</AssociationEnd>
</UpdateFunction>
<DeleteFunction
FunctionName="AdventureWorksModel.Store.DeleteSalesOrderDetail" >
<ScalarProperty Name="SalesOrderDetailID"
ParameterName="SalesOrderDetailID" Version="Original"/>
<AssociationEnd
AssociationSet="FK_SalesOrderDetail_SalesOrderHeader_SalesOrderID"
From="SalesOrderDetail" To="SalesOrderHeader">
<ScalarProperty Name="SalesOrderID"
ParameterName="SalesOrderID" />
</AssociationEnd>
</DeleteFunction>
</ModificationFunctionMapping>
См. также
Задачи
Как определить модель с помощью хранимой процедуры (платформа Entity Framework)
Основные понятия
ModificationFunctionMapping (AssociationSetMapping)
Поддержка хранимых процедур (платформа Entity Framework)
Другие ресурсы
Пошаговое руководство: сопоставление сущности с хранимыми процедурами