アソシエーション型

"アソシエーション型" (アソシエーションとも呼ばれます) は、Entity Data Model (EDM) でリレーションシップを記述するために不可欠な構成要素です。 概念モデルでは、アソシエーションによって 2 つのエンティティ型 (CustomerOrder など) の間のリレーションシップが表されます。 アプリケーションでは、アソシエーションのインスタンスが特定のアソシエーション (Customer のインスタンスと Order のインスタンスの間のアソシエーションなど) を表します。 アソシエーション インスタンスは、アソシエーション セットに論理的にグループ化されます。

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

  • 一意の名前 (必須)

  • 2 つのアソシエーション End (リレーションシップを構成する各エンティティ型に 1 つずつ)。 (必須)

    Note

    アソシエーションは、2 つ以上のエンティティ型のリレーションシップを表すことができません。 しかし、各アソシエーション End に同じエンティティ型を指定することによって、アソシエーションで自己リレーションシップを定義できます。

  • 参照整合性制約。 (オプション)。

各アソシエーション End には、アソシエーションの 1 つの End に存在できるエンティティ型のインスタンス数を示すアソシエーション End の多重度を指定する必要があります。 アソシエーション End の多重度には、1 (1)、ゼロか 1 (0..1)、または多数 (*) の値を指定することができます。 アソシエーションの一方の End にあるエンティティ型のインスタンスには、それらがエンティティ型で公開されている場合、ナビゲーション プロパティまたは外部キーからアクセスできます。 詳しくは、「Entity Data Model: 外部キー」をご覧ください。

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

Example model with three entity types

ADO.NET Entity Framework では、概念スキーマ定義言語 (CSDL) と呼ばれるドメイン固有言語 (DSL) を使用して概念モデルを定義します。 次の CSDL は、上のダイアグラムに示された PublishedBy アソシエーションを定義しています。

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

関連項目