AssociationEnd 要素 (MSL)
マッピング仕様言語 (MSL) の AssociationEnd 要素は、概念モデルのエンティティ型の変更関数が、基になるデータベース内のストアド プロシージャにマップされるときに使用されます。 値がアソシエーション プロパティに保持されるパラメーターを、変更ストアド プロシージャが受け取る場合に、AssociationEnd 要素はプロパティ値をパラメーターにマップします。 詳細については、下の例を参照してください。
エンティティ型の変更関数をストアド プロシージャにマッピングする方法の詳細については、「ModificationFunctionMapping 要素 (MSL)」と「Walkthrough: Mapping an Entity to Stored Procedures」を参照してください。
The AssociationEnd element can have the following child elements:
適用可能な属性
The following table describes the attributes that are applicable to the AssociationEnd element.
属性名 | 必須 | Value |
---|---|---|
AssociationSet |
有効 |
マップされるアソシエーションの名前。 |
From |
有効 |
The value of the FromRole attribute of the navigation property that corresponds to the association being mapped. 詳細については、「NavigationProperty 要素 (CSDL)」を参照してください。 |
To |
有効 |
The value of the ToRole attribute of the navigation property that corresponds to the association being mapped. 詳細については、「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 プロパティを (Course エンティティ型の更新関数のマップ先である) UpdateCourse ストアド プロシージャにマップするために使用される 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>