AssociationEnd 元素 (MSL)
当将概念模型中的实体类型的修改函数映射到基础数据库的存储过程中时,使用以映射规范语言 (MSL) 表示的 AssociationEnd 元素。 如果某个修改存储过程采用一个值保存在关联属性中的参数,则 AssociationEnd 元素会将属性值映射到参数。 有关更多信息,请参见下面的示例。
有关将实体类型的修改函数映射到存储过程的更多信息,请参见 ModificationFunctionMapping 元素 (MSL) 和Walkthrough: Mapping an Entity to Stored Procedures。
AssociationEnd 元素可以具有以下子元素:
适用的特性
下表介绍适用于 AssociationEnd 元素的特性。
特性名称 | 是否必需 | 值 |
---|---|---|
AssociationSet |
是 |
要映射的关联的名称。 |
From |
是 |
对应于要映射关联的导航属性的 FromRole 特性的值。 有关更多信息,请参见 NavigationProperty 元素 (CSDL)。 |
To |
是 |
对应于要映射关联的导航属性的 ToRole 特性的值。 有关更多信息,请参见 NavigationProperty 元素 (CSDL)。 |
示例
请考虑使用以下概念模型实体类型:
<EntityType Name="Course">
<Key>
<PropertyRef Name="CourseID" />
</Key>
<Property Type="Int32" Name="CourseID" Nullable="false" />
<Property Type="String" Name="Title" Nullable="false" MaxLength="100"
FixedLength="false" Unicode="true" />
<Property Type="Int32" Name="Credits" Nullable="false" />
<NavigationProperty Name="Department"
Relationship="SchoolModel.FK_Course_Department"
FromRole="Course" ToRole="Department" />
</EntityType>
另请考虑使用以下存储过程:
CREATE PROCEDURE [dbo].[UpdateCourse]
@CourseID int,
@Title nvarchar(50),
@Credits int,
@DepartmentID int
AS
UPDATE Course SET Title=@Title,
Credits=@Credits,
DepartmentID=@DepartmentID
WHERE CourseID=@CourseID;
为将 Course
实体的更新函数映射到此存储过程,您必须为 DepartmentID 参数提供一个值。 DepartmentID
的值与实体类型中的某个属性不对应;该值包含在独立的关联中,此关联的映射如下所示:
<AssociationSetMapping Name="FK_Course_Department"
TypeName="SchoolModel.FK_Course_Department"
StoreEntitySet="Course">
<EndProperty Name="Course">
<ScalarProperty Name="CourseID" ColumnName="CourseID" />
</EndProperty>
<EndProperty Name="Department">
<ScalarProperty Name="DepartmentID" ColumnName="DepartmentID" />
</EndProperty>
</AssociationSetMapping>
下面的代码演示了用于将 FK_Course_Department 关联的 DepartmentID 属性映射到 UpdateCourse 存储过程(Course 实体类型的更新函数映射到此存储过程)的 AssociationEnd 元素:
<EntitySetMapping Name="Courses">
<EntityTypeMapping TypeName="SchoolModel.Course">
<MappingFragment StoreEntitySet="Course">
<ScalarProperty Name="Credits" ColumnName="Credits" />
<ScalarProperty Name="Title" ColumnName="Title" />
<ScalarProperty Name="CourseID" ColumnName="CourseID" />
</MappingFragment>
</EntityTypeMapping>
<EntityTypeMapping TypeName="SchoolModel.Course">
<ModificationFunctionMapping>
<UpdateFunction FunctionName="SchoolModel.Store.UpdateCourse">
<AssociationEnd AssociationSet="FK_Course_Department"
From="Course" To="Department">
<ScalarProperty Name="DepartmentID"
ParameterName="DepartmentID"
Version="Current" />
</AssociationEnd>
<ScalarProperty Name="Credits" ParameterName="Credits"
Version="Current" />
<ScalarProperty Name="Title" ParameterName="Title"
Version="Current" />
<ScalarProperty Name="CourseID" ParameterName="CourseID"
Version="Current" />
</UpdateFunction>
</ModificationFunctionMapping>
</EntityTypeMapping>
</EntitySetMapping>