次の方法で共有


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>

関連項目

その他の技術情報

CSDL、SSDL、および MSL 仕様

モデリングとマッピング