次の方法で共有


Schema 要素 (CSDL)

Schema 要素は、概念モデル定義のルート要素です。概念モデルを構成するオブジェクト、関数、およびコンテナーの定義を格納します。

Schema 要素には、0 個以上の次の子要素を含めることができます。

Schema 要素には、0 個以上の Annotation 要素を含めることができます。

注意

Function 要素と annotation 要素は、.NET Framework Version 4 以降を対象としたアプリケーションの概念モデルでのみ使用できます。このようなモデルの XML 名前空間は、https://schemas.microsoft.com/ado/2008/09/edm です。

Schema 要素は、Namespace 属性を使用して概念モデルのエンティティ型、複合型、およびアソシエーション オブジェクトの名前空間を定義します。1 つの名前空間内で 2 つのオブジェクトが同じ名前を持つことはできません。名前空間は、複数の Schema 要素と複数の .csdl ファイルにまたがることができます。

概念モデル名前空間は、Schema 要素の XML 名前空間とは異なります。概念モデル名前空間 (Namespace 属性で定義) は、エンティティ型、複合型、およびアソシエーション型の論理コンテナーです。Schema 要素の XML 名前空間 (xmlns 属性で示される) は、Schema 要素の子要素と属性の既定の名前空間です。フォーム https://schemas.microsoft.com/ado/YYYY/MM/edm (YYYY と MM は、それぞれ年と月を表します) の XML 名前空間は、CSDL 用に予約されています。カスタム要素と属性は、このフォームがある名前空間に存在することはできません。

適用可能な属性

Schema 要素に適用できる属性を次の表に示します。

属性名

必須

Namespace

はい

概念モデルの名前空間。Namespace 属性の値は、型の完全修飾名を形成するために使用されます。たとえば、Customer という名前の EntityType が Simple.Example.Model 名前空間にある場合、この EntityType の完全修飾名は SimpleExampleModel.Customer です。

Namespace 属性の値として、文字列 System、Transient、または Edm を使用することはできません。Namespace 属性の値を SSDL Schema 要素の Namespace 属性の値と同じにすることはできません。

Alias

いいえ

名前空間の名前の代わりに使用される識別子。たとえば、Customer という名前の EntityType が、Simple.Example.Model 名前空間にあり、Alias 属性の値が Model である場合、Model.Customer を EntityType. の完全修飾名として使用することができます。

注意

Schema 要素には、任意の数の annotation 属性 (カスタム XML 属性) を適用できます。ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属さない場合があります。カスタム属性の完全修飾名は一意である必要があります。

次の例に、1 つの EntityContainer 要素、2 つの EntityType 要素、および 1 つの Association 要素を持つ Schema 要素を示します。

<Schema xmlns="https://schemas.microsoft.com/ado/2008/09/edm" 
     xmlns:cg="https://schemas.microsoft.com/ado/2006/04/codegeneration"
     xmlns:store="https://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" 
      Namespace="ExampleModel" Alias="Self">
        <EntityContainer Name="ExampleModelContainer">
          <EntitySet Name="Customers" 
                     EntityType="ExampleModel.Customer" />
          <EntitySet Name="Orders" EntityType="ExampleModel.Order" />
          <AssociationSet 
                      Name="CustomerOrder" 
                      Association="ExampleModel.CustomerOrders">
            <End Role="Customer" EntitySet="Customers" />
            <End Role="Order" EntitySet="Orders" />
          </AssociationSet>
        </EntityContainer>
        <EntityType Name="Customer">
          <Key>
            <PropertyRef Name="CustomerId" />
          </Key>
          <Property Type="Int32" Name="CustomerId" Nullable="false" />
          <Property Type="String" Name="Name" Nullable="false" />
          <NavigationProperty 
                   Name="Orders" 
                   Relationship="ExampleModel.CustomerOrders" 
                   FromRole="Customer" ToRole="Order" />
        </EntityType>
        <EntityType Name="Order">
          <Key>
            <PropertyRef Name="OrderId" />
          </Key>
          <Property Type="Int32" Name="OrderId" Nullable="false" />
          <Property Type="Int32" Name="ProductId" Nullable="false" />
          <Property Type="Int32" Name="Quantity" Nullable="false" />
          <NavigationProperty 
                   Name="Customer" 
                   Relationship="ExampleModel.CustomerOrders" 
                   FromRole="Order" ToRole="Customer" />
          <Property Type="Int32" Name="CustomerId" Nullable="false" />
        </EntityType>
        <Association Name="CustomerOrders">
          <End Type="ExampleModel.Customer" 
               Role="Customer" Multiplicity="1" />
          <End Type="ExampleModel.Order" 
               Role="Order" Multiplicity="*" />
          <ReferentialConstraint>
            <Principal Role="Customer">
              <PropertyRef Name="CustomerId" />
            </Principal>
            <Dependent Role="Order">
              <PropertyRef Name="CustomerId" />
            </Dependent>
          </ReferentialConstraint>
        </Association>
      </Schema>

関連項目

概念

エンティティ フレームワークの概要

CSDL 仕様

その他の技術情報

CSDL、SSDL、および MSL 仕様

ADO.NET Entity Data Model ツール