ModificationFunctionMapping (EntityTypeMapping)

在实体数据模型 (EDM) 中,ModificationFunctionMapping 元素在作为 EntityTypeMapping 元素的子元素时指定存储架构中的一些函数,这些函数处理 EntityType 的更改。ModificationFunctionMapping 元素包含 DeleteFunctionInsertFunctionUpdateFunction 元素。这些函数元素中的每个元素都包含一个 FunctionName 元素,该元素映射到存储模型中的某个存储过程。

ModificationFunctionMapping 元素中的函数处理对 EntityType 所做的更改。在这些实例中,ModificationFunctionMapping 元素由 EntityTypeMapping 元素所包含,而后者又由 EntitySetMapping 元素所包含。在这种情况下,将在对所创建、修改或删除的实体的运算中处理关联。

Note注意

ModificationFunctionMapping 元素中的函数还可以映射到创建或删除现有实体之间的关联实例的存储过程。在这些实例中,ModificationFunctionMapping 元素由 AssociationSetMapping 元素所包含。有关更多信息,请参见将关联集映射到存储过程(实体框架)ModificationFunctionMapping (AssociationSetMapping)

示例

下面的示例演示 ModificationFunctionMapping 元素如何将函数元素映射到为 EntityType 处理更改的存储过程。在此示例中,ModificationFunctionMapping 元素映射修改 SalesOrderDetail 实体(该实体通过语法 TypeName="AdventureWorksModel.SalesOrderDetail" 进行标识)的函数。

若要使用此映射,SalesOrderDetail 实体上的所有三种更新函数(插入、更新和删除)都必须映射到存储过程。所有这三种函数都使用以下元素完成此映射:

  • 每个函数元素中的 FunctionName 元素都使用下面的语法标识存储架构中每个对应的存储过程:FunctionName="AdventureWorksModel.Store.CreateSalesOrderDetail"

  • 每个函数元素中的 ScalarProperty 元素都将目标实体的属性映射到存储过程中的对应参数。

  • 根据存储模型中的数据模型和对应的外键关系的需要,每个 Function 元素中的 AssociationEnd 元素指定对关联所进行的更新的详细信息。EntityTypeMapping 中的 AssociationEnd 元素使您可以将关系视为特定于实体的引用或外键。有关更多信息,请参见存储过程支持(实体框架)

下面的示例演示 ModificationFunctionMapping 元素的完整声明。此架构可以由实体框架设计工具生成。有关更多信息,请参见演练:将实体映射到存储过程

<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>

另请参见

任务

如何:使用存储过程定义模型(实体框架)

概念

ModificationFunctionMapping (AssociationSetMapping)
存储过程支持(实体框架)

其他资源

演练:将实体映射到存储过程