Поделиться через


ModificationFunctionMapping (EntityTypeMapping)

В модели EDM элемент ModificationFunctionMapping, при условии, что его дочерним элементом является EntityTypeMapping, определяет функции схемы хранения, которые выполняют обработку изменений для EntityType. Элемент ModificationFunctionMapping содержит элементы DeleteFunction, InsertFunction и UpdateFunction. Каждый из этих функциональных элементов содержит элемент FunctionName, который сопоставляется с хранимой процедурой в модели хранения.

Функции, заданные в элементе ModificationFunctionMapping, обрабатывают изменения EntityType. В этих экземплярах элемент ModificationFunctionMapping содержится внутри элемента EntityTypeMapping, который, в свою очередь, содержится внутри элемента EntitySetMapping. В этом случае ассоциации обрабатываются в процессе выполнения операций над сущностями (операций создания, изменения и удаления).

NoteПримечание.

Функции, заданные в элементе 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)

Другие ресурсы

Пошаговое руководство: сопоставление сущности с хранимыми процедурами