ResultBinding 要素 (MSL)
マッピング スキーマ言語 (MSL) の ResultBinding 要素は、エンティティ型の変更関数が基になるデータベース内のストアド プロシージャにマップされている場合、ストアド プロシージャから返される列値を概念モデルのエンティティ プロパティにマップします。たとえば、ID 列の値が挿入ストアド プロシージャから返されると、ResultBinding 要素は、戻り値を概念モデルのエンティティ型プロパティにマップします。
ResultBinding 要素は、InsertFunction 要素または UpdateFunction 要素の子にすることができます。
ResultBinding 要素には、子要素を含めることはできません。
適用可能な属性
次の表は、ResultBinding 要素に適用できる属性を示しています。
属性名 |
必須 |
値 |
---|---|---|
Name |
はい |
マップされる概念モデルのエンティティ プロパティの名前。 |
ColumnName |
有効 |
マップされる列の名前。 |
例
次の例は School モデルに基づいており、Person エンティティ型の挿入関数を InsertPerson ストアド プロシージャにマップするときに使用する InsertFunction 要素を示しています。次に示す InsertPerson ストアド プロシージャは、ストレージ モデルで宣言されます。ResultBinding 要素は、ストアド プロシージャから返された列値 (NewPersonID) をエンティティ型プロパティ (PersonID) にマップするときに使用されます。
<EntityTypeMapping TypeName="SchoolModel.Person">
<ModificationFunctionMapping>
<InsertFunction FunctionName="SchoolModel.Store.InsertPerson">
<ScalarProperty Name="EnrollmentDate" ParameterName="EnrollmentDate" />
<ScalarProperty Name="HireDate" ParameterName="HireDate" />
<ScalarProperty Name="FirstName" ParameterName="FirstName" />
<ScalarProperty Name="LastName" ParameterName="LastName" />
<ResultBinding Name="PersonID" ColumnName="NewPersonID" />
</InsertFunction>
<UpdateFunction FunctionName="SchoolModel.Store.UpdatePerson">
<ScalarProperty Name="EnrollmentDate" ParameterName="EnrollmentDate" Version="Current" />
<ScalarProperty Name="HireDate" ParameterName="HireDate" Version="Current" />
<ScalarProperty Name="FirstName" ParameterName="FirstName" Version="Current" />
<ScalarProperty Name="LastName" ParameterName="LastName" Version="Current" />
<ScalarProperty Name="PersonID" ParameterName="PersonID" Version="Current" />
</UpdateFunction>
<DeleteFunction FunctionName="SchoolModel.Store.DeletePerson">
<ScalarProperty Name="PersonID" ParameterName="PersonID" />
</DeleteFunction>
</ModificationFunctionMapping>
</EntityTypeMapping>
<EntityTypeMapping TypeName="SchoolModel.Person">
<ModificationFunctionMapping>
<InsertFunction FunctionName="SchoolModel.Store.InsertPerson">
<ScalarProperty Name="EnrollmentDate"
ParameterName="EnrollmentDate" />
<ScalarProperty Name="HireDate" ParameterName="HireDate" />
<ScalarProperty Name="FirstName" ParameterName="FirstName" />
<ScalarProperty Name="LastName" ParameterName="LastName" />
<ResultBinding Name="PersonID" ColumnName="NewPersonID" />
</InsertFunction>
<UpdateFunction FunctionName="SchoolModel.Store.UpdatePerson">
<ScalarProperty Name="EnrollmentDate"
ParameterName="EnrollmentDate"
Version="Current" />
<ScalarProperty Name="HireDate" ParameterName="HireDate"
Version="Current" />
<ScalarProperty Name="FirstName" ParameterName="FirstName"
Version="Current" />
<ScalarProperty Name="LastName" ParameterName="LastName"
Version="Current" />
<ScalarProperty Name="PersonID" ParameterName="PersonID"
Version="Current" />
</UpdateFunction>
<DeleteFunction FunctionName="SchoolModel.Store.DeletePerson">
<ScalarProperty Name="PersonID" ParameterName="PersonID" />
</DeleteFunction>
</ModificationFunctionMapping>
</EntityTypeMapping>
次の Transact-SQL は InsertPerson ストアド プロシージャを記述します。
CREATE PROCEDURE [dbo].[InsertPerson]
@LastName nvarchar(50),
@FirstName nvarchar(50),
@HireDate datetime,
@EnrollmentDate datetime
AS
INSERT INTO dbo.Person (LastName,
FirstName,
HireDate,
EnrollmentDate)
VALUES (@LastName,
@FirstName,
@HireDate,
@EnrollmentDate);
SELECT SCOPE_IDENTITY() as NewPersonID;