アソシエーション型
"アソシエーション型" (アソシエーションとも呼ばれます) は、Entity Data Model (EDM) でリレーションシップを記述するために不可欠な構成要素です。 概念モデルでは、アソシエーションによって 2 つのエンティティ型 (Customer
や Order
など) の間のリレーションシップが表されます。 アプリケーションでは、アソシエーションのインスタンスが特定のアソシエーション (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 社の出版社により出版されることを示します。
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>