アソシエーション セット (EDM)
エンティティ データ モデル (EDM) では、AssociationSet は、1 つの型のアソシエーションの論理コンテナです。同様に、エンティティ セットは、同じ型のエンティティのコンテナです。スキーマに定義されているエンティティ セットおよびアソシエーション セットは、アプリケーションのデータが格納されるデータベース内のテーブルにマップされます。エンティティ セットおよびアソシエーション セットは、アプリケーション コードによって使用されるプログラミング オブジェクト モデルのクラスの基礎を構成します。
AssociationSet は、次の 2 つの理由で使用されます。
Association のエンドポイントのスコープを指定する。
エンティティ インスタンス間のアソシエーションを管理する。
EntityType は複数の EntitySet で使用できるので、リレーションシップのエンドポイントのスコープを指定するためのアソシエーション セットが必要です。
Association は、Association によって指定された 2 つのエンティティ セットに属する複数のエンティティ インスタンスを接続します。AssociationSet は、Association のインスタンスを格納します (存在する場合)。
エンティティ型は、エンティティ セットおよびエンティティ コンテナに論理的に格納およびインスタンス化されます。同様に、アソシエーションは、アソシエーション セットおよびエンティティ コンテナにインスタンス化されます。
アソシエーションおよびアソシエーション セットは、エンティティやエンティティ セットと同様に、抽象的な概念です。AssociationSet の各実装は派生型です。
AssociationSet の Association 属性は、次の概念スキーマ定義言語 (CSDL) スキーマ構文の Association を指定します。
<AssociationSet Name="CustomerOrderSet" Association="CustomerOrderType">
EntitySet の 2 つの End は、AssociationSet の End プロパティで指定されます。アソシエーションは、名前空間名で完全修飾されている必要があります。
<AssociationSet Name="CustomerOrderSet" Association="
MyCompany.LOBSchema.CustomerOrderType">
<End Role="Orders" EntitySet="CustomerSet" />
<End Role="OrderedBy" EntitySet="OrderSet" />
</AssociationSet >
AssociationSet の End プロパティは、EntityType インスタンスに対応する EntitySet インスタンスを指定します。
次の例に、2 つのエンティティ型、2 つのエンティティ セット、1 つのアソシエーション、およびアソシエーション セットの宣言を示します。
<?xml version="1.0" encoding="utf-8"?>
<Schema xmlns:cg="https://schemas.microsoft.com/ado/2006/04/codegeneration"
xmlns:edm="https://schemas.microsoft.com/ado/2006/04/edm"
xmlns="https://schemas.microsoft.com/ado/2006/04/edm"
Namespace="MyCompany.LOBSchema" Alias="Self">
<EntityType Name="Customer">
<Key>
<Property Name="CustomerId" Type="Int32" Nullable="false" />
</Key>
<!-- Other properties -->
</EntityType>
<EntityType Name="Order">
<Key>
<PropertyRef Name="OrderId" />
</Key>
<Property Name="OrderId" Type="Int32" Nullable="false" />
<!-- Other properties -->
</EntityType>
<Association Name="CustomerOrderType">
<End Role="Orders" Type="Namespace.Customer" Multiplicity="1" />
<End Role="OrderedBy" Type=" Namespace.Order" Multiplicity="0..*" />
</Association>
<EntityContainer Name="ContainerType">
<EntitySet Name="CustomerSet" EntityType=" Namespace.Customer" />
<EntitySet Name="OrderSet" EntityType=" MyCompany.LOBSchema.Order" />
<AssociationSet Name="CustomerOrderSet" Association="CustomerOrderType">
<End Role="Orders" EntitySet=" MyCompany.LOBSchema.CustomerSet" />
<End Role="OrderedBy" EntitySet="MyCompany.LOBSchema.OrderSet" />
</AssociationSet>
</EntityContainer>
</Schema>
この例では、最初に EntityType の Customer
エンティティと Order
エンティティを定義しています。次に、CustomerOrderType
という名前の Association を定義しています。CustomerSet
と OrderSet
のエンティティ セットは、EntityContainer 内で宣言されています。エンティティ コンテナの詳細については、「エンティティ コンテナ (EDM)」を参照してください。
AssociationSet 要素は、CustomerOrderSet
という名前で CustomerOrderType
型の AssociationSet として EntityContainer 内にも定義されています。
CustomerOrderSet
の 2 つの End プロパティは、EntitySet 型です (CustomerSet
と OrderSet
)。Association インスタンスは CustomerOrderSet
内にあり、CustomerSet
の Customer
インスタンスを OrderSet
の Order
インスタンスと接続します。
参照
概念
アソシエーション (EDM)
Entity Data Model のリレーションシップ
Entity Data Model の型
エンティティ セット (EDM)
エンティティ コンテナ (EDM)
スキーマ (EDM)