アソシエーション End

"アソシエーション End" では、アソシエーションの一方の End にあるエンティティ型と、アソシエーションのその End に存在できるエンティティ型のインスタンス数が示されます。 アソシエーション End はアソシエーションの一部として定義され、アソシエーションには必ず 2 つのアソシエーション End が必要です。 ナビゲーション プロパティにより、一方のアソシエーション End から他方のアソシエーション End へのナビゲーションが可能になります。

アソシエーション End の定義には、次の情報が含まれます。

  • アソシエーションに含まれるエンティティ型の 1 つ。 (必須)

    Note

    アソシエーションでは、各アソシエーション End に同じエンティティ型を指定することができます。 これにより、自己アソシエーションが作成されます。

  • アソシエーションの 1 つの End に存在できるエンティティ型のインスタンス数を示すアソシエーション End の多重度。 アソシエーション End の多重度には、1 (1)、ゼロか 1 (0..1)、または多数 (*) の値を指定することができます。

  • アソシエーション End の名前。 (オプション)。

  • アソシエーション End に実行する CASCADE ON DELETE などの操作の情報。 (オプション)。

下のダイアグラムは、PublishedBy および WrittenBy という 2 つのアソシエーションの概念モデルを示しています。 PublishedBy アソシエーションのアソシエーション End は Book および Publisher のエンティティ型です。 Publisher End の多重度は 1 (1) で、Book End の多重度は多数 (*) です。これは、出版社が多くの書籍を出版し、書籍は 1 社の出版社により出版されることを示します。

3 種類のエンティティを持つモデルの例

ADO.NET Entity Framework では、概念スキーマ定義言語 (CSDL) と呼ばれるドメイン固有言語 (DSL) を使用して、概念モデルを定義します。 次の CSDL は、上のダイアグラムに示された PublishedBy アソシエーションを定義します。 各アソシエーション End の型、名前、および多重度は、XML 属性 (それぞれ Type 属性、Role 属性、および Multiplicity 属性) で指定されます。 アソシエーション End に実行する操作に関するオプション情報は、XML 要素 (OnDelete 要素) に指定します。 この場合、出版社を削除すると、関連付けられたすべての書籍も削除されます。

  <Association Name="PublishedBy">
    <End Type="BooksModel.Book" Role="Book" Multiplicity="*" />
    <End Type="BooksModel.Publisher" Role="Publisher" Multiplicity="1" >
  <OnDelete Action="Cascade" />
</End>
  </Association>

関連項目