AssociationEnd 要素 (MSL)
マッピング仕様言語 (MSL) の AssociationEnd 要素は、概念モデルのエンティティ型の変更関数が、基になるデータベース内のストアド プロシージャにマップされるときに使用されます。値がアソシエーション プロパティに保持されるパラメーターを、変更ストアド プロシージャが受け取る場合に、AssociationEnd 要素はプロパティ値をパラメーターにマップします。詳細については、下の例を参照してください。
エンティティ型の変更関数をストアド プロシージャにマッピングする方法の詳細については、「ModificationFunctionMapping 要素 (MSL)」と「チュートリアル : ストアド プロシージャへのエンティティのマッピング」を参照してください。
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>
<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>
<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>