Association 要素 (CSDL)
Association 要素は、2 つのエンティティ型の間のリレーションシップを定義します。アソシエーションでは、リレーションシップに関連するエンティティ型、およびリレーションシップの各 End におけるエンティティ型の数 (多重度と呼ばれる) を指定する必要があります。アソシエーション End の多重度には、1 (1)、ゼロか 1 (0..1)、または多数 (*) の値を指定することができます。この情報は、2 つの子 End 要素で指定されます。
アソシエーションの一方の End にあるエンティティ型のインスタンスには、それらがエンティティ型で公開されている場合、ナビゲーション プロパティまたは外部キーからアクセスできます。詳細については、「NavigationProperty 要素」、「ReferentialConstraint 要素」、および「リレーションシップの定義と管理」を参照してください。
アプリケーション内で、アソシエーションのインスタンスは、エンティティ型のインスタンスの間の特定のアソシエーションを表します。アソシエーション インスタンスは、アソシエーション セットに論理的にグループ化されます。詳細については、「AssociationSet 要素」を参照してください。
Association 要素には、次の子要素をここに示す順序で含めることができます。
Documentation (0 個または 1 個の要素)
End (2 個の要素のみ)
ReferentialConstraint (0 個または 1 個の要素)
Annotation 要素 (0 個以上の要素)
適用可能な属性
Association 要素に適用できる属性を次の表に示します。
属性名 |
必須 |
値 |
---|---|---|
Name |
はい |
アソシエーションの名前。 |
注意
Association 要素には、任意の数の annotation 属性 (カスタム XML 属性) を適用できます。ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属さない場合があります。カスタム属性の完全修飾名は一意である必要があります。
例
次の例は、Customer エンティティ型と Order エンティティ型で外部キーが公開されていない場合に CustomerOrders アソシエーションを定義する Association 要素を示しています。アソシエーションの各 End の Multiplicity 値は、多数の Orders を 1 個の Customer に関連付けることができることを示していますが、Order に関連付けることができる Customer は、1 個だけです。さらに、OnDelete 要素は、Customer が削除されると、特定の Customer に関連し、かつ ObjectContext に読み込まれた Orders もすべて共に削除されることを示しています。
<Association Name="CustomerOrders">
<End Type="ExampleModel.Customer" Role="Customer" Multiplicity="1" >
<OnDelete Action="Cascade" />
</End>
<End Type="ExampleModel.Order" Role="Order" Multiplicity="*" />
</Association>
次の例は、Customer エンティティ型と Order エンティティ型で外部キーが公開されている場合に CustomerOrders アソシエーションを定義する Association 要素を示しています。外部キーが公開されているので、エンティティ間のリレーションシップは ReferentialConstraint 要素で管理されます。このアソシエーションをデータ ソースにマップするために、対応する AssociationSetMapping 要素は必要ありません。
<Association Name="CustomerOrders">
<End Type="ExampleModel.Customer" Role="Customer" Multiplicity="1" >
<OnDelete Action="Cascade" />
</End>
<End Type="ExampleModel.Order" Role="Order" Multiplicity="*" />
<ReferentialConstraint>
<Principal Role="Customer">
<PropertyRef Name="Id" />
</Principal>
<Dependent Role="Order">
<PropertyRef Name="CustomerId" />
</Dependent>
</ReferentialConstraint>
</Association>