次の方法で共有


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>

参照

その他のリソース

CSDL、SSDL、および MSL 仕様
モデリングとマッピング (Entity Framework)