AssociationEnd 項目 (MSL)
對應規格語言 (MSL) 中的 AssociationEnd 項目是在將概念模型中實體類型的修改函式對應至基礎資料庫中的預存程序時使用。 如果修改預存程序採用的參數,其值是關聯屬性中保留的值,則 AssociationEnd 項目會將屬性值對應至參數。 如需詳細資訊,請參閱下列範例。
如需將實體類型的修改函式對應至預存程序的詳細資訊,請參閱 ModificationFunctionMapping 項目 (MSL) 和Walkthrough: Mapping an Entity to Stored Procedures。
AssociationEnd 項目可以擁有下列子項目:
適用屬性
下表描述可套用至 AssociationEnd 項目的屬性。
屬性名稱 | 必要 | 值 |
---|---|---|
AssociationSet |
是 |
要對應的關聯名稱。 |
From |
是 |
導覽屬性 (property) 之 FromRole 屬性 (attribute) 的值,它會對應至要對應的關聯。 如需詳細資訊,請參閱 NavigationProperty 項目 (CSDL)。 |
To |
是 |
導覽屬性 (property) 之 ToRole 屬性 (attribute) 的值,它會對應至要對應的關聯。 如需詳細資訊,請參閱 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>
下列程式碼顯示的 AssociationEnd 項目用來將 FK_Course_Department 關聯的 DepartmentID 屬性對應至 UpdateCourse 預存程序 (Course 實體類型的更新函式所對應者):
<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>