InsertFunction 元素 (MSL)
以映射规范语言 (MSL) 表示的 InsertFunction 元素将概念模型中的实体类型或关联的插入函数映射到基础数据库中的存储过程。 将修改函数映射到其中的存储过程必须在存储模型中声明。 有关更多信息,请参见 Function 元素 (SSDL)。
注意: |
---|
如果没有将实体类型的插入、更新或删除这三种操作全部映射到存储过程,则在运行时执行的情况下未映射的操作将失败且会引发 UpdateException。 |
InsertFunction 元素可以为 ModificationFunctionMapping 元素的子元素,并可应用于 EntityTypeMapping 元素或 AssociationSetMapping 元素。
应用于 EntityTypeMapping 的 InsertFunction
如果将 InsertFunction 元素应用于 EntityTypeMapping 元素,该元素会将概念模型中的实体类型的插入函数映射到存储过程。
InsertFunction 元素在应用于 EntityTypeMapping 元素时可以具有以下子元素:
AssociationEnd(零个或多个)
ComplexProperty(零个或多个)
ResultBinding(零个或一个)
ScarlarProperty(零个或多个)
适用的特性
下表介绍当 InsertFunction 元素应用于 EntityTypeMapping 元素时,可应用于该元素的特性。
特性名称 | 是否必需 | 值 |
---|---|---|
FunctionName |
是 |
插入函数要映射到的存储过程的命名空间限定名称。 存储过程必须在存储模型中声明。 |
RowsAffectedParameter |
否 |
返回受影响行数的输出参数的名称。 |
示例
下面的示例基于 School 模型,并显示用于将 Person 实体类型的插入函数映射到 InsertPerson 存储过程的 InsertFunction 元素。 InsertPerson 存储过程在存储模型中声明。
<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>
应用于 AssociationSetMapping 的 InsertFunction
如果将 InsertFunction 元素应用于 AssociationSetMapping 元素,该元素会将概念模型中的关联的插入函数映射到存储过程。
InsertFunction 元素在应用于 AssociationSetMapping 元素时可以具有以下子元素:
适用的特性
下表介绍当 InsertFunction 元素应用于 AssociationSetMapping 元素时,可应用于该元素的特性。
特性名称 | 是否必需 | 值 |
---|---|---|
FunctionName |
是 |
插入函数要映射到的存储过程的命名空间限定名称。 存储过程必须在存储模型中声明。 |
RowsAffectedParameter |
否 |
返回受影响行数的输出参数的名称。 |
示例
下面的示例基于 School 模型,并显示用于将 CourseInstructor 关联的插入函数映射到 InsertCourseInstructor 存储过程的 InsertFunction 元素。 InsertCourseInstructor 存储过程在存储模型中声明。
<AssociationSetMapping Name="CourseInstructor"
TypeName="SchoolModel.CourseInstructor"
StoreEntitySet="CourseInstructor">
<EndProperty Name="Person">
<ScalarProperty Name="PersonID" ColumnName="PersonID" />
</EndProperty>
<EndProperty Name="Course">
<ScalarProperty Name="CourseID" ColumnName="CourseID" />
</EndProperty>
<ModificationFunctionMapping>
<InsertFunction FunctionName="SchoolModel.Store.InsertCourseInstructor" >
<EndProperty Name="Course">
<ScalarProperty Name="CourseID" ParameterName="courseId"/>
</EndProperty>
<EndProperty Name="Person">
<ScalarProperty Name="PersonID" ParameterName="instructorId"/>
</EndProperty>
</InsertFunction>
<DeleteFunction FunctionName="SchoolModel.Store.DeleteCourseInstructor">
<EndProperty Name="Course">
<ScalarProperty Name="CourseID" ParameterName="courseId"/>
</EndProperty>
<EndProperty Name="Person">
<ScalarProperty Name="PersonID" ParameterName="instructorId"/>
</EndProperty>
</DeleteFunction>
</ModificationFunctionMapping>
</AssociationSetMapping>