アソシエーション型 (Entity Data Model)
アソシエーション型 (アソシエーションとも呼ばれます) は、Entity Data Model (EDM) でリレーションシップを記述するために不可欠な構成要素です。 概念モデルでは、アソシエーションが 2 つのエンティティ型 (Customer や Order など) の間のリレーションシップを表します。 アプリケーションでは、アソシエーションのインスタンスが特定のアソシエーション (Customer のインスタンスと Order のインスタンスの間のアソシエーションなど) を表します。 アソシエーション インスタンスは、アソシエーション セットに論理的にグループ化されます。
アソシエーションの定義には、次の情報が含まれます。
一意の名前。 (必須)
2 つのアソシエーション End (リレーションシップを構成する各エンティティ型に 1 つずつ)。 (必須)
注 : アソシエーションは、2 つ以上のエンティティ型のリレーションシップを表すことができません。しかし、各アソシエーション End に同じエンティティ型を指定することによって、アソシエーションで自己リレーションシップを定義できます。 参照整合性制約。 (省略可能)
各アソシエーション End には、アソシエーションの 1 つの End に存在できるエンティティ型のインスタンス数を示すアソシエーション End の多重度を指定する必要があります。 アソシエーション End の多重度には、1 (1)、ゼロか 1 (0..1)、または多数 (*) の値を指定することができます。 アソシエーションの 1 つの End にあるエンティティ型のインスタンスには、エンティティ型で公開されている場合、ナビゲーション プロパティまたは外部キーからアクセスできます。 詳細については、「Entity Data Model: 外部キー」を参照してください。
例
下のダイアグラムは、PublishedBy および WrittenBy という 2 つのアソシエーションの概念モデルを示しています。 PublishedBy アソシエーションのアソシエーション End は Book および Publisher のエンティティ型です。 Publisher End の多重度は 1 (1) で、Book End の多重度は多数 (*) です。これは、出版社が多くの書籍を出版し、書籍は 1 社の出版社により出版されることを示します。
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>