次の方法で共有


エンティティ コンテナ (EDM)

エンティティ データ モデル (EDM) の EntityContainer は、エンティティ セットとアソシエーション セットの論理的なグループです。プログラミング モデルは概念スキーマ定義言語 (CSDL) スキーマから構築されるため、EntityContainer は、定義されているオブジェクト モデルの名前空間に対する仕様と考えることができます。ストア スキーマ定義言語 (SSDL) スキーマでは、EntityContainer によって、モデルに基づいて構築されたアプリケーションのデータを永続化するストレージ コンテナが識別されます。ストレージ コンテナとして使用される代表的なテクノロジとして、リレーショナル データベース管理システム (RDBMS) のデータベースがあります。

EntityContainer は、エンティティおよびリレーションシップのスコープを制御します。EDM のあらゆる型は、EntityContainer 名前空間のスコープ内で定義されます。EntitySet および AssociationSet のインスタンスは、EntityContainer のスコープ内で作成されます。同様に、EntityType または Association のインスタンスも、EntitySet または AssociationSet のスコープ内で作成されます。

XML 階層では、スキーマに EntityContainer が定義されている場合でも、EntityContainer 要素は Schema 要素から独立しています。これは、EntityContainer をストレージにマッピングする上で重要なことです。マッピング ファイルでは、EntityContainer の完全修飾名にスキーマの名前空間の名前は含まれません。

EntityContainer は、EDM によって提供される基本 EntityContainer 構造から派生します。EntityContainer では、EntitySet および AssociationSet から派生する型が指定されます。

EntityContainer で定義された EntitySet には、別の EntityContainer で定義された EntityType が含まれる場合もあります。

AssociationSet では、別の EntityContainer で定義された EntitySet を参照することはできません。

次の例では、2 つのエンティティ型と 1 つのアソシエーション型をそれぞれ宣言した後、2 つのエンティティ セットと 1 つのアソシエーション セットから成る EntityContainer を宣言しています。

次のスキーマには、エンティティの宣言が含まれています。

<?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.EntityTypes" Alias="Self">

    <EntityType Name="Order">
        <Key>
            <PropertyRef Name="OrderId" />
        </Key>
        <Property Name="OrderId" Type="String" />
        <!--Other Properties-->
    </EntityType>

    <EntityType Name="Customer">
        <Key>
            <PropertyRef Name="CustomerId" />
        </Key>
        <Property Name="CustomerId" Type="String" />
        <!--Other Properties-->
    </EntityType>

</Schema>

次のスキーマには、アソシエーションの宣言が含まれています。

<?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.RelationshipTypes">

    <Using Namespace="MyCompany.EntityTypes" Alias="basicTypes"/>

    <Association Name="CustomerOrder">
        <End Type="basicTypes.Customer" Multiplicity="1" />
        <End Type="basicTypes.Order" Multiplicity="*" />
    </Association>
</Schema>

次のスキーマには、エンティティ コンテナの宣言が含まれています。

<?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.ContainerType">

    <EntityContainer name="ContainerOne">
        <Using Namespace="MyCompany.EntityTypes" Alias="basicTypes"/>
        <Using Namespace="MyCompany.RelationshipTypes" Alias="relnTypes"/>

        <EntitySet Name="CustomerSet" EntityType="basicTypes.Customer"/>
        <EntitySet Name="OrderSet" EntityType="basicTypes.Order"/>

        <AssociationSet Name="CustomerOrderSet" Association="relnTypes.CustomerOrder">
            <End EntitySet="CustomerSet" Role="Orders"/>
            <End EntitySet="OrderSet" Role="OrderedBy"/>
        </AssociationSet>
    </EntityContainer>
</Schema>

参照

概念

アソシエーション (EDM)

その他のリソース

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