ResultBinding 元素 (MSL)
当将实体类型修改函数映射到基础数据库的存储过程时,以映射规范语言 (MSL) 表示的 ResultBinding 元素会将由存储过程返回的列值映射到概念模型中的实体属性。 例如,当插入存储过程返回标识列的值时,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>
下面的 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;