次の方法で共有


アソシエーション セット (EDM)

エンティティ データ モデル (EDM) では、AssociationSet は、1 つの型のアソシエーションの論理コンテナです。同様に、エンティティ セットは、同じ型のエンティティのコンテナです。スキーマに定義されているエンティティ セットおよびアソシエーション セットは、アプリケーションのデータが格納されるデータベース内のテーブルにマップされます。エンティティ セットおよびアソシエーション セットは、アプリケーション コードによって使用されるプログラミング オブジェクト モデルのクラスの基礎を構成します。

AssociationSet は、次の 2 つの理由で使用されます。

  • Association のエンドポイントのスコープを指定する。

  • エンティティ インスタンス間のアソシエーションを管理する。

EntityType は複数の EntitySet で使用できるので、リレーションシップのエンドポイントのスコープを指定するためのアソシエーション セットが必要です。

Association は、Association によって指定された 2 つのエンティティ セットに属する複数のエンティティ インスタンスを接続します。AssociationSet は、Association のインスタンスを格納します (存在する場合)。

エンティティ型は、エンティティ セットおよびエンティティ コンテナに論理的に格納およびインスタンス化されます。同様に、アソシエーションは、アソシエーション セットおよびエンティティ コンテナにインスタンス化されます。

アソシエーションおよびアソシエーション セットは、エンティティやエンティティ セットと同様に、抽象的な概念です。AssociationSet の各実装は派生型です。

AssociationSetAssociation 属性は、次の概念スキーマ定義言語 (CSDL) スキーマ構文の Association を指定します。

<AssociationSet Name="CustomerOrderSet" Association="CustomerOrderType">

EntitySet の 2 つの End は、AssociationSetEnd プロパティで指定されます。アソシエーションは、名前空間名で完全修飾されている必要があります。

<AssociationSet Name="CustomerOrderSet" Association=" 
                        MyCompany.LOBSchema.CustomerOrderType">
    <End Role="Orders" EntitySet="CustomerSet" />
    <End Role="OrderedBy" EntitySet="OrderSet" />
</AssociationSet >

AssociationSetEnd プロパティは、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>

この例では、最初に EntityTypeCustomer エンティティと Order エンティティを定義しています。次に、CustomerOrderType という名前の Association を定義しています。CustomerSetOrderSet のエンティティ セットは、EntityContainer 内で宣言されています。エンティティ コンテナの詳細については、「エンティティ コンテナ (EDM)」を参照してください。

AssociationSet 要素は、CustomerOrderSet という名前で CustomerOrderType 型の AssociationSet として EntityContainer 内にも定義されています。

CustomerOrderSet の 2 つの End プロパティは、EntitySet 型です (CustomerSetOrderSet)。Association インスタンスは CustomerOrderSet 内にあり、CustomerSetCustomer インスタンスを OrderSetOrder インスタンスと接続します。

参照

概念

アソシエーション (EDM)
Entity Data Model のリレーションシップ
Entity Data Model の型
エンティティ セット (EDM)
エンティティ コンテナ (EDM)
スキーマ (EDM)

その他のリソース

スキーマおよびマッピング スキーマ (Entity Framework)