Entity Data Model (EDM) で、ModificationFunctionMapping 要素は、EntityTypeMapping 要素の子要素である場合、EntityType の変更処理を行うストレージ スキーマの関数を指定します。ModificationFunctionMapping 要素には DeleteFunction、InsertFunction、および UpdateFunction 要素があります。これらの関数要素にはそれぞれ、ストレージ モデルのストアド プロシージャにマップされる FunctionName 要素が含まれます。
ModificationFunctionMapping 要素の関数は EntityType への変更を処理します。これらのインスタンスでは、ModificationFunctionMapping 要素は EntityTypeMapping 要素に含まれ、さらに、後者の要素は EntitySetMapping 要素に含まれます。この場合、アソシエーションは、作成、変更、または削除されるエンティティに対する操作の一部として処理されます。
[!メモ]
ModificationFunctionMapping 要素の関数は、既存のエンティティ間のアソシエーションのインスタンスを作成または削除するストアド プロシージャにマップすることもできます。これらのインスタンスでは、ModificationFunctionMapping 要素は AssociationSetMapping 要素に含まれます。詳細については、「ストアド プロシージャへのアソシエーション セットのマッピング (Entity Framework)」および「ModificationFunctionMapping (AssociationSetMapping)」を参照してください。
例
次の例では、EntityType への変更を処理するために、ModificationFunctionMapping 要素によって関数要素をストアド プロシージャにマップする方法を示します。この例では、ModificationFunctionMapping 要素は、TypeName="AdventureWorksModel.SalesOrderDetail"
という構文で識別される SalesOrderDetail
エンティティを変更する関数をマップします。
このマッピングを使用するには、SalesOrderDetail
エンティティに対する 3 つの更新関数 (挿入、更新、削除) のすべてをストアド プロシージャにマップする必要があります。このマッピングを完成させるため、3 つの関数ではそれぞれ次の要素を使用します。
各関数要素の FunctionName 要素では、
FunctionName="AdventureWorksModel.Store.CreateSalesOrderDetail"
という構文を使用して、ストレージ スキーマの対応する各ストアド プロシージャを識別します。各関数要素の ScalarProperty 要素は、ターゲット エンティティのプロパティをストアド プロシージャの対応するパラメータにマップします。
各 Function 要素の AssociationEnd 要素は、データ モデルで、およびストレージ モデルの対応する外部キー リレーションシップで必要とされるアソシエーションへの更新の詳細を指定します。EntityTypeMapping 内の AssociationEnd 要素によって、リレーションシップをエンティティに固有の参照として、つまり外部キーとして扱うことができます。詳細については、「ストアド プロシージャのサポート (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)