CSDL 仕様CSDL Specification

概念スキーマ定義言語 (CSDL : Conceptual Schema Definition Language) は、XML ベースの言語であり、データ駆動型アプリケーションの概念モデルを構成するエンティティ、リレーションシップ、および関数を記述します。Conceptual schema definition language (CSDL) is an XML-based language that describes the entities, relationships, and functions that make up a conceptual model of a data-driven application. この概念モデルは、Entity Framework または WCF Data Services で使用できます。This conceptual model can be used by the Entity Framework or WCF Data Services. CSDL で記述されたメタデータは、概念モデルで定義されているエンティティとリレーションシップをデータソースにマップするために、Entity Framework によって使用されます。The metadata that is described with CSDL is used by the Entity Framework to map entities and relationships that are defined in a conceptual model to a data source. 詳細については、「 SSDL 仕様MSL 仕様」を参照してください。For more information, see SSDL Specification and MSL Specification.

CSDL は、Entity Data Model の Entity Framework での実装です。CSDL is the Entity Framework's implementation of the Entity Data Model.

Entity Framework アプリケーションでは、概念モデルのメタデータは、csdl で記述された .csdl ファイルから EdmItemCollection のインスタンスに読み込まれます。このメタデータには、クラスのメソッドを使用してアクセスすることができます。In an Entity Framework application, conceptual model metadata is loaded from a .csdl file (written in CSDL) into an instance of the System.Data.Metadata.Edm.EdmItemCollection and is accessible by using methods in the System.Data.Metadata.Edm.MetadataWorkspace class. Entity Framework は、概念モデルのメタデータを使用して、概念モデルに対するクエリをデータソース固有のコマンドに変換します。Entity Framework uses conceptual model metadata to translate queries against the conceptual model to data source-specific commands.

EF デザイナーは、デザイン時に .edmx ファイルに概念モデル情報を格納します。The EF Designer stores conceptual model information in an .edmx file at design time. EF デザイナーは、ビルド時に .edmx ファイルの情報を使用して、実行時に Entity Framework に必要な .csdl ファイルを作成します。At build time, the EF Designer uses information in an .edmx file to create the .csdl file that is needed by Entity Framework at runtime.

CSDL のバージョンは、XML 名前空間で区別されます。Versions of CSDL are differentiated by XML namespaces.

CSDL のバージョンCSDL Version XML 名前空間XML Namespace
CSDL v1CSDL v1 https://schemas.microsoft.com/ado/2006/04/edm
CSDL v2CSDL v2 https://schemas.microsoft.com/ado/2008/09/edm
CSDL v3CSDL v3 https://schemas.microsoft.com/ado/2009/11/edm

 

Association 要素 (CSDL)Association Element (CSDL)

Association要素は、2つのエンティティ型間のリレーションシップを定義します。An Association element defines a relationship between two entity types. アソシエーションでは、リレーションシップに関連するエンティティ型、およびリレーションシップの各 End におけるエンティティ型の数 (多重度と呼ばれる) を指定する必要があります。An association must specify the entity types that are involved in the relationship and the possible number of entity types at each end of the relationship, which is known as the multiplicity. アソシエーション end の複数要素の接続性には、1 (1)、0または 1 (0 ..1)、または many () を指定でき * ます。The multiplicity of an association end can have a value of one (1), zero or one (0..1), or many (*). この情報は、2 つの子 End 要素で指定されます。This information is specified in two child End elements.

アソシエーションの一方の End にあるエンティティ型のインスタンスには、それらがエンティティ型で公開されている場合、ナビゲーション プロパティまたは外部キーからアクセスできます。Entity type instances at one end of an association can be accessed through navigation properties or foreign keys, if they are exposed on an entity type.

アプリケーション内で、アソシエーションのインスタンスは、エンティティ型のインスタンスの間の特定のアソシエーションを表します。In an application, an instance of an association represents a specific association between instances of entity types. アソシエーション インスタンスは、アソシエーション セットに論理的にグループ化されます。Association instances are logically grouped in an association set.

Association要素には、次の子要素を含めることができます (順に記載されています)。An Association element can have the following child elements (in the order listed):

  • Documentation (0 個または 1 個の要素)Documentation (zero or one element)
  • End (2 個の要素のみ)End (exactly 2 elements)
  • ReferentialConstraint (0 個または 1 個の要素)ReferentialConstraint (zero or one element)
  • Annotation 要素 (0 個以上の要素)Annotation elements (zero or more elements)

該当する属性Applicable Attributes

次の表では、 Association 要素に適用できる属性について説明します。The table below describes the attributes that can be applied to the Association element.

属性名Attribute Name 必須Is Required Value
名前Name はいYes アソシエーションの名前。The name of the association.

 

注意

任意の数の annotation 属性 (カスタム XML 属性) を Association 要素に適用できます。Any number of annotation attributes (custom XML attributes) may be applied to the Association element. ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属していない場合があります。However, custom attributes may not belong to any XML namespace that is reserved for CSDL. カスタム属性の完全修飾名は一意である必要があります。The fully-qualified names for any two custom attributes cannot be the same.

 

Example

次の例では、外部キーがCustomerおよびOrderエンティティ型で公開されていない場合に、 CustomerOrders関連付けを定義するassociation要素を示しています。The following example shows an Association element that defines the CustomerOrders association when foreign keys have not been exposed on the Customer and Order entity types. アソシエーションの各Endの複数要素の接続性の値は、顧客に複数の注文を関連付けることができることを示していますが、注文に関連付けることができるのは1つの顧客だけです。The Multiplicity values for each End of the association indicate that many Orders can be associated with a Customer, but only one Customer can be associated with an Order. また、 OnDelete要素は、顧客が削除されると、特定の顧客に関連付けられていて、ObjectContext に読み込まれているすべての注文が削除されることを示します。Additionally, the OnDelete element indicates that all Orders that are related to a particular Customer and have been loaded into the ObjectContext will be deleted if the Customer is deleted.

 <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要素を示しています。The following example shows an Association element that defines the CustomerOrders association when foreign keys have been exposed on the Customer and Order entity types. 外部キーが公開されている場合、エンティティ間のリレーションシップは 、要素を使用して 管理されます。With foreign keys exposed, the relationship between the entities is managed with a ReferentialConstraint element. このアソシエーションをデータ ソースにマップするために、対応する AssociationSetMapping 要素は必要ありません。A corresponding AssociationSetMapping element is not necessary to map this association to the data source.

 <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>

 

 

AssociationSet 要素 (CSDL)AssociationSet Element (CSDL)

概念スキーマ定義言語 (CSDL) の AssociationSet 要素は、同じ型のアソシエーションインスタンスの論理コンテナーです。The AssociationSet element in conceptual schema definition language (CSDL) is a logical container for association instances of the same type. アソシエーション セットは、複数のアソシエーション インスタンスを 1 つのデータ ソースにマップできるようグループ化する方法を指定します。An association set provides a definition for grouping association instances so that they can be mapped to a data source.  

AssociationSet要素には、次の子要素を含めることができます (この順序で表示されます)。The AssociationSet element can have the following child elements (in the order listed):

  • Documentation (0 または 1 つの要素を含めることができます)。Documentation (zero or one elements allowed)
  • End (2 つの要素が必要とされます)。End (exactly two elements required)
  • Annotation 要素 (0 個以上の要素を含めることができます)。Annotation elements (zero or more elements allowed)

Association 属性は、アソシエーション セットに含まれるアソシエーションの種類を指定します。The Association attribute specifies the type of association that an association set contains. アソシエーションセットの末尾を構成するエンティティセットは、厳密に2つの子 End 要素で指定されます。The entity sets that make up the ends of an association set are specified with exactly two child End elements.

該当する属性Applicable Attributes

次の表では、 AssociationSet 要素に適用できる属性について説明します。The table below describes the attributes that can be applied to the AssociationSet element.

属性名Attribute Name 必須Is Required Value
名前Name はいYes エンティティ セットの名前。The name of the entity set. Name属性の値をAssociation属性の値と同じにすることはできません。The value of the Name attribute cannot be the same as the value of the Association attribute.
関連付けAssociation はいYes 関連付けの完全修飾名。そのインスタンスは、アソシエーション セットに格納されます。The fully-qualified name of the association that the association set contains instances of. 関連付けは、アソシエーション セットと同じ名前空間に存在する必要があります。The association must be in the same namespace as the association set.

 

注意

任意の数の annotation 属性 (カスタム XML 属性) を AssociationSet 要素に適用できます。Any number of annotation attributes (custom XML attributes) may be applied to the AssociationSet element. ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属していない場合があります。However, custom attributes may not belong to any XML namespace that is reserved for CSDL. カスタム属性の完全修飾名は一意である必要があります。The fully-qualified names for any two custom attributes cannot be the same.

 

Example

次の例は、2つのAssociationSet要素を持つEntityContainer要素を示しています。The following example shows an EntityContainer element with two AssociationSet elements:

 <EntityContainer Name="BooksContainer" >
   <EntitySet Name="Books" EntityType="BooksModel.Book" />
   <EntitySet Name="Publishers" EntityType="BooksModel.Publisher" />
   <EntitySet Name="Authors" EntityType="BooksModel.Author" />
   <AssociationSet Name="PublishedBy" Association="BooksModel.PublishedBy">
     <End Role="Book" EntitySet="Books" />
     <End Role="Publisher" EntitySet="Publishers" />
   </AssociationSet>
   <AssociationSet Name="WrittenBy" Association="BooksModel.WrittenBy">
     <End Role="Book" EntitySet="Books" />
     <End Role="Author" EntitySet="Authors" />
   </AssociationSet>
 </EntityContainer>

 

 

CollectionType 要素 (CSDL)CollectionType Element (CSDL)

概念スキーマ定義言語 (CSDL) の CollectionType 要素は、関数パラメーターまたは関数の戻り値の型がコレクションであることを指定します。The CollectionType element in conceptual schema definition language (CSDL) specifies that a function parameter or function return type is a collection. CollectionType要素は、Parameter 要素または ReturnType (Function) 要素の子にすることができます。The CollectionType element can be a child of the Parameter element or the ReturnType (Function) element. コレクションの型は、 type 属性または次のいずれかの子要素を使用して指定できます。The type of collection can be specified by using either the Type attribute or one of the following child elements:

  • CollectionTypeCollectionType
  • ReferenceTypeReferenceType
  • RowTypeRowType
  • TypeRefTypeRef

注意

属性と子要素の両方でコレクションの型が指定されている場合、モデルは検証されません。A model will not validate if the type of a collection is specified with both the Type attribute and a child element.

 

該当する属性Applicable Attributes

次の表では、 CollectionType 要素に適用できる属性について説明します。The following table describes the attributes that can be applied to the CollectionType element. DefaultValueMaxLengthFixedLengthPrecisionScaleUnicode、およびCollation属性は、 edmsimpletypesのコレクションにのみ適用されることに注意してください。Note that the DefaultValue, MaxLength, FixedLength, Precision, Scale, Unicode, and Collation attributes are only applicable to collections of EDMSimpleTypes.

属性名Attribute Name 必須Is Required Value
TypeType いいえNo コレクションの型。The type of the collection.
NULL 値の使用Nullable いいえNo プロパティに null 値を指定できるかどうかに応じて、True (既定値) または FalseTrue (the default value) or False depending on whether the property can have a null value.
[!NOTE]
CSDL v1 で > 複合型プロパティにはが必要 Nullable="False" です。> In the CSDL v1, a complex type property must have Nullable="False".
既定DefaultValue いいえNo プロパティの既定値です。The default value of the property.
MaxLengthMaxLength いいえNo プロパティ値の最大長。The maximum length of the property value.
FixedLengthFixedLength いいえNo プロパティ値が固定長文字列として格納されるかどうかによって、 TrueまたはFalseになります。True or False depending on whether the property value will be stored as a fixed length string.
[精度]Precision いいえNo プロパティ値の有効桁数。The precision of the property value.
スケールScale いいえNo プロパティ値の小数点以下桁数。The scale of the property value.
SRIDSRID いいえNo 空間システム参照識別子。Spatial System Reference Identifier. 空間型のプロパティに対してのみ有効です。Valid only for properties of spatial types.詳細については、「 SRID and SRID (SQL Server) 」を参照してください。   For more information, see SRID and SRID (SQL Server)
UnicodeUnicode いいえNo プロパティ値が Unicode 文字列として格納されるかどうかによって、 TrueまたはFalseになります。True or False depending on whether the property value will be stored as a Unicode string.
CollationCollation いいえNo データ ソースで使用される照合順序を指定する文字列。A string that specifies the collating sequence to be used in the data source.

 

注意

任意の数の annotation 属性 (カスタム XML 属性) を CollectionType 要素に適用できます。Any number of annotation attributes (custom XML attributes) may be applied to the CollectionType element. ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属していない場合があります。However, custom attributes may not belong to any XML namespace that is reserved for CSDL. カスタム属性の完全修飾名は一意である必要があります。The fully-qualified names for any two custom attributes cannot be the same.

 

Example

次の例は、 CollectionType 要素を使用して、関数が Person エンティティ型のコレクション ( ElementType 属性で指定) を返すことを指定するモデル定義関数を示しています。The following example shows a model-defined function that that uses a CollectionType element to specify that the function returns a collection of Person entity types (as specified with the ElementType attribute).

 <Function Name="LastNamesAfter">
        <Parameter Name="someString" Type="Edm.String"/>
        <ReturnType>
             <CollectionType  ElementType="SchoolModel.Person"/>
        </ReturnType>
        <DefiningExpression>
             SELECT VALUE p
             FROM SchoolEntities.People AS p
             WHERE p.LastName >= someString
        </DefiningExpression>
 </Function>

 

次の例は、 CollectionType 要素を使用して、 RowType 要素で指定された行のコレクションを返すことを指定するモデル定義関数を示しています。The following example shows a model-defined function that uses a CollectionType element to specify that the function returns a collection of rows (as specified in the RowType element).

 <Function Name="LastNamesAfter">
   <Parameter Name="someString" Type="Edm.String" />
   <ReturnType>
    <CollectionType>
      <RowType>
        <Property Name="FirstName" Type="Edm.String" Nullable="false" />
        <Property Name="LastName" Type="Edm.String" Nullable="false" />
      </RowType>
    </CollectionType>
   </ReturnType>
   <DefiningExpression>
             SELECT VALUE ROW(p.FirstName, p.LastName)
             FROM SchoolEntities.People AS p
             WHERE p.LastName &gt;= somestring
   </DefiningExpression>
 </Function>

 

次の例は、 CollectionType 要素を使用して、関数が 学科 エンティティ型のコレクションをパラメーターとして受け入れることを指定するモデル定義関数を示しています。The following example shows a model-defined function that uses the CollectionType element to specify that the function accepts as a parameter a collection of Department entity types.

 <Function Name="GetAvgBudget">
      <Parameter Name="Departments">
          <CollectionType>
             <TypeRef Type="SchoolModel.Department"/>
          </CollectionType>
           </Parameter>
       <ReturnType Type="Collection(Edm.Decimal)"/>
       <DefiningExpression>
             SELECT VALUE AVG(d.Budget) FROM Departments AS d
       </DefiningExpression>
 </Function>

 

 

ComplexType 要素 (CSDL)ComplexType Element (CSDL)

ComplexType要素は、 edmsimpletypeプロパティまたは他の複合型で構成されるデータ構造を定義します。A ComplexType element defines a data structure composed of EdmSimpleType properties or other complex types.複合型は、エンティティ型または別の複合型のプロパティにすることができます。  A complex type can be a property of an entity type or another complex type. 複合型は、データを定義するという点でエンティティ型に似ています。A complex type is similar to an entity type in that a complex type defines data. ただし、複合型とエンティティ型の間にはいくつかの重要な違いがあります。However, there are some key differences between complex types and entity types:

  • 複合型には ID (またはキー) がないため、独立して存在することができません。Complex types do not have identities (or keys) and therefore cannot exist independently. 複合型は、エンティティ型またはその他の複合型のプロパティとしてのみ存在できます。Complex types can only exist as properties of entity types or other complex types.
  • 複合型は、アソシエーションに参加できません。Complex types cannot participate in associations. アソシエーションのいずれの End にも複合型を指定できないため、複合型にはナビゲーション プロパティを定義できません。Neither end of an association can be a complex type, and therefore navigation properties cannot be defined for complex types.
  • 複合型のスカラー プロパティはそれぞれ null に設定できますが、複合型のプロパティには null 値を指定できません。A complex type property cannot have a null value, though the scalar properties of a complex type may each be set to null.

ComplexType要素には、次の子要素を含めることができます (一覧の順序)。A ComplexType element can have the following child elements (in the order listed):

  • Documentation (0 個または 1 個の要素)Documentation (zero or one element)
  • Property (0 個以上の要素)Property (zero or more elements)
  • Annotation 要素 (0 個以上の要素)Annotation elements (zero or more elements)

次の表では、 ComplexType 要素に適用できる属性について説明します。The table below describes the attributes that can be applied to the ComplexType element.

属性名Attribute Name 必須Is Required Value
名前Name はいYes 複合型の名前。The name of the complex type. 複合型の名前は、モデルのスコープ内にある別の複合型、エンティティ型、またはアソシエーションの名前と同じにすることはできません。The name of a complex type cannot be the same as the name of another complex type, entity type, or association that is within the scope of the model.
BaseTypeBaseType いいえNo 定義される複合型の基本データ型である、別の複合型の名前。The name of another complex type that is the base type of the complex type that is being defined.
[!NOTE]
> この属性は CSDL v1 では適用できません。> This attribute is not applicable in CSDL v1. 複合型の継承は、このバージョンではサポートされません。Inheritance for complex types is not supported in that version.
概要Abstract いいえNo 複合型が抽象型であるかどうかに応じて、 TrueまたはFalse (既定値)。True or False (the default value) depending on whether the complex type is an abstract type.
[!NOTE]
> この属性は CSDL v1 では適用できません。> This attribute is not applicable in CSDL v1. このバージョンの複合型を抽象型にすることはできません。Complex types in that version cannot be abstract types.

 

注意

任意の数の annotation 属性 (カスタム XML 属性) を ComplexType 要素に適用できます。Any number of annotation attributes (custom XML attributes) may be applied to the ComplexType element. ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属していない場合があります。However, custom attributes may not belong to any XML namespace that is reserved for CSDL. カスタム属性の完全修飾名は一意である必要があります。The fully-qualified names for any two custom attributes cannot be the same.

 

Example

次の例では、 EdmsimpletypeプロパティStreetAddressCityStateOrProvince、Country、および郵便****番号を使用して、複合型Addressを示します。The following example shows a complex type, Address, with the EdmSimpleType properties StreetAddress, City, StateOrProvince, Country, and PostalCode.

 <ComplexType Name="Address" >
   <Property Type="String" Name="StreetAddress" Nullable="false" />
   <Property Type="String" Name="City" Nullable="false" />
   <Property Type="String" Name="StateOrProvince" Nullable="false" />
   <Property Type="String" Name="Country" Nullable="false" />
   <Property Type="String" Name="PostalCode" Nullable="false" />
 </ComplexType>

 

エンティティ型のプロパティとして複合型の アドレス (上記) を定義するには、エンティティ型の定義でプロパティの型を宣言する必要があります。To define the complex type Address (above) as a property of an entity type, you must declare the property type in the entity type definition. 次の例では、エンティティ型 (パブリッシャー) の複合型としてAddressプロパティを示しています。The following example shows the Address property as a complex type on an entity type (Publisher):

 <EntityType Name="Publisher">
       <Key>
         <PropertyRef Name="Id" />
       </Key>
       <Property Type="Int32" Name="Id" Nullable="false" />
       <Property Type="String" Name="Name" Nullable="false" />
       <Property Type="BooksModel.Address" Name="Address" Nullable="false" />
       <NavigationProperty Name="Books" Relationship="BooksModel.PublishedBy"
                           FromRole="Publisher" ToRole="Book" />
     </EntityType>

 

 

DefiningExpression 要素 (CSDL)DefiningExpression Element (CSDL)

概念スキーマ定義言語 (CSDL) の definition ingexpression 要素には、概念モデルの関数を定義する Entity SQL 式が含まれています。The DefiningExpression element in conceptual schema definition language (CSDL) contains an Entity SQL expression that defines a function in the conceptual model.  

注意

検証のために、 定義 要素には任意のコンテンツを含めることができます。For validation purposes, a DefiningExpression element can contain arbitrary content. ただし、 定義 要素に有効な Entity SQL が含まれていない場合、Entity Framework は実行時に例外をスローします。However, Entity Framework will throw an exception at runtime if a DefiningExpression element does not contain valid Entity SQL.

 

該当する属性Applicable Attributes

任意の数の annotation 属性 (カスタム XML 属性 ) を定義 することができます。Any number of annotation attributes (custom XML attributes) may be applied to the DefiningExpression element. ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属していない場合があります。However, custom attributes may not belong to any XML namespace that is reserved for CSDL. カスタム属性の完全修飾名は一意である必要があります。The fully-qualified names for any two custom attributes cannot be the same.

Example

次の例では、定義、 を使用して、書籍が発行されてからの年数を返す関数を定義します。The following example uses a DefiningExpression element to define a function that returns the number of years since a book was published. 定義済みの要素の内容は Entity SQL で記述されます。The content of the DefiningExpression element is written in Entity SQL.

 <Function Name="GetYearsInPrint" ReturnType="Edm.Int32" >
       <Parameter Name="book" Type="BooksModel.Book" />
       <DefiningExpression>
         Year(CurrentDateTime()) - Year(cast(book.PublishedDate as DateTime))
       </DefiningExpression>
     </Function>

 

 

Dependent 要素 (CSDL)Dependent Element (CSDL)

概念スキーマ定義言語 (CSDL) の dependent 要素は、参照に関する制約の依存 end を定義し、参照制約の依存 end を定義します。The Dependent element in conceptual schema definition language (CSDL) is a child element to the ReferentialConstraint element and defines the dependent end of a referential constraint. 参照整合性の 制約要素は、リレーショナル データベースの参照整合性制約に似た機能を定義します。A ReferentialConstraint element defines functionality that is similar to a referential integrity constraint in a relational database. データベース テーブルの列が別のテーブルの主キーを参照できるのと同じように、エンティティ型のプロパティが別のエンティティ型のエンティティ キーを参照できます。In the same way that a column (or columns) from a database table can reference the primary key of another table, a property (or properties) of an entity type can reference the entity key of another entity type. 参照されるエンティティ型は、制約の "プリンシパル End" と呼ばれます。The entity type that is referenced is called the principal end of the constraint. プリンシパル End を参照するエンティティ型は、制約の "依存 End" と呼ばれます。The entity type that references the principal end is called the dependent end of the constraint. Propertyref 要素は、プリンシパル end を参照するキーを指定するために使用されます。PropertyRef elements are used to specify which keys reference the principal end.

Dependent要素には、次の子要素を含めることができます (順に記載されています)。The Dependent element can have the following child elements (in the order listed):

  • PropertyRef (1 個以上の要素)PropertyRef (one or more elements)
  • Annotation 要素 (0 個以上の要素)Annotation elements (zero or more elements)

該当する属性Applicable Attributes

次の表は、 依存 要素に適用できる属性を示しています。The table below describes the attributes that can be applied to the Dependent element.

属性名Attribute Name 必須Is Required Value
ロールRole はいYes アソシエーションの依存 End 上のエンティティ型の名前。The name of the entity type on the dependent end of the association.

 

注意

任意の数の annotation 属性 (カスタム XML 属性) を 依存 要素に適用できます。Any number of annotation attributes (custom XML attributes) may be applied to the Dependent element. ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属していない場合があります。However, custom attributes may not belong to any XML namespace that is reserved for CSDL. カスタム属性の完全修飾名は一意である必要があります。The fully-qualified names for any two custom attributes cannot be the same.

 

Example

次の例では、 publishedby関連付けの定義の一部として使用されている 、オブジェクトの場所を示します。The following example shows a ReferentialConstraint element being used as part of the definition of the PublishedBy association. Bookエンティティ型のPublisherIdプロパティは、参照制約の依存 end を構成します。The PublisherId property of the Book entity type makes up the dependent end of the referential constraint.

 <Association Name="PublishedBy">
   <End Type="BooksModel.Book" Role="Book" Multiplicity="*" >
   </End>
   <End Type="BooksModel.Publisher" Role="Publisher" Multiplicity="1" />
   <ReferentialConstraint>
     <Principal Role="Publisher">
       <PropertyRef Name="Id" />
     </Principal>
     <Dependent Role="Book">
       <PropertyRef Name="PublisherId" />
     </Dependent>
   </ReferentialConstraint>
 </Association>

 

 

Documentation 要素 (CSDL)Documentation Element (CSDL)

概念スキーマ定義言語 (CSDL) の Documentation 要素は、親要素で定義されているオブジェクトに関する情報を提供するために使用できます。The Documentation element in conceptual schema definition language (CSDL) can be used to provide information about an object that is defined in a parent element. .Edmx ファイルで、 documentation 要素が、EF デザイナーのデザイン画面 (エンティティ、アソシエーション、プロパティなど) でオブジェクトとして表示される要素の子である場合、 documentation 要素の内容は、そのオブジェクトの Visual Studio の [ プロパティ ] ウィンドウに表示されます。In an .edmx file, when the Documentation element is a child of an element that appears as an object on the design surface of the EF Designer  (such as an entity, association, or property), the contents of the Documentation element will appear in the Visual Studio Properties window for the object.

Documentation要素には、次の子要素を含めることができます (一覧の順序)。The Documentation element can have the following child elements (in the order listed):

  • Summary: 親要素の簡単な説明。Summary: A brief description of the parent element. (0 個または 1 個の要素)。(zero or one element)
  • Longdescription: 親要素の詳細な説明。LongDescription: An extensive description of the parent element. (0 個または 1 個の要素)。(zero or one element)
  • annotation 要素Annotation elements. (0 個以上の要素)。(zero or more elements)

該当する属性Applicable Attributes

Documentation要素には、任意の数の annotation 属性 (カスタム XML 属性) を適用できます。Any number of annotation attributes (custom XML attributes) may be applied to the Documentation element. ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属していない場合があります。However, custom attributes may not belong to any XML namespace that is reserved for CSDL. カスタム属性の完全修飾名は一意である必要があります。The fully-qualified names for any two custom attributes cannot be the same.

Example

次の例は、EntityType 要素の子要素としての Documentation 要素を示しています。The following example shows the Documentation element as a child element of an EntityType element. 以下のスニペットが .edmx ファイルの CSDL コンテンツに含まれている場合、エンティティ型をクリックすると、 Summary要素とlongdescription要素の内容が Visual Studio の [ プロパティ] ウィンドウに表示されます。 CustomerIf the snippet below were in the CSDL content of an .edmx file, the contents of the Summary and LongDescription elements would appear in the Visual Studio Properties window when you click on the Customer entity type.

 <EntityType Name="Customer">
    <Documentation>
      <Summary>Summary here.</Summary>
      <LongDescription>Long description here.</LongDescription>
    </Documentation>
    <Key>
      <PropertyRef Name="CustomerId" />
    </Key>
    <Property Type="Int32" Name="CustomerId" Nullable="false" />
    <Property Type="String" Name="Name" Nullable="false" />
 </EntityType>

 

 

End 要素 (CSDL)End Element (CSDL)

概念スキーマ定義言語 (CSDL) の End 要素は、Association 要素または AssociationSet 要素の子にすることができます。The End element in conceptual schema definition language (CSDL) can be a child of the Association element or the AssociationSet element. どちらの場合も、 End 要素の役割は異なり、適用可能な属性も異なります。In each case, the role of the End element is different and the applicable attributes are different.

Association 要素の子としての End 要素End Element as a Child of the Association Element

End要素 ( association要素の子として) は、アソシエーションの一方の end のエンティティ型と、アソシエーションのその end に存在できるエンティティ型のインスタンスの数を識別します。An End element (as a child of the Association element) identifies the entity type on one end of an association and the number of entity type instances that can exist at that end of an association. アソシエーション End はアソシエーションの一部として定義され、アソシエーションには必ず 2 つのアソシエーション End が必要です。Association ends are defined as part of an association; an association must have exactly two association ends. アソシエーションの 1 つの End にあるエンティティ型インスタンスには、ナビゲーション プロパティまたは外部キーからアクセスできます (エンティティ型で公開されている場合)。Entity type instances at one end of an association can be accessed through navigation properties or foreign keys if they are exposed on an entity type.  

終了要素には、次の子要素を含めることができます (一覧の順序)。An End element can have the following child elements (in the order listed):

  • Documentation (0 個または 1 個の要素)Documentation (zero or one element)
  • OnDelete (0 個または 1 個の要素)OnDelete (zero or one element)
  • Annotation 要素 (0 個以上の要素)Annotation elements (zero or more elements)

該当する属性Applicable Attributes

次の表では、 End 要素が Association 要素の子である場合に適用できる属性について説明します。The following table describes the attributes that can be applied to the End element when it is the child of an Association element.

属性名Attribute Name 必須Is Required Value
TypeType はいYes アソシエーションの一方の End のエンティティ型の名前。The name of the entity type at one end of the association.
RoleRole いいえNo アソシエーション End の名前。A name for the association end. 名前が指定されない場合、アソシエーション End のエンティティ型の名前が使用されます。If no name is provided, the name of the entity type on the association end will be used.
カーディナリティMultiplicity はいYes 10 ..1、または * アソシエーションの最後にあるエンティティ型のインスタンスの数によって異なります。1, 0..1, or * depending on the number of entity type instances that can be at the end of the association.
1 は、アソシエーション end に1つのエンティティ型インスタンスが存在することを示します。1 indicates that exactly one entity type instance exists at the association end.
0 ..1 は、アソシエーション end に0個または1個のエンティティ型インスタンスが存在することを示します。0..1 indicates that zero or one entity type instances exist at the association end.
* アソシエーション end に0個以上のエンティティ型インスタンスが存在することを示します。* indicates that zero, one, or more entity type instances exist at the association end.

 

注意

任意の数の annotation 属性 (カスタム XML 属性) を 終了 要素に適用できます。Any number of annotation attributes (custom XML attributes) may be applied to the End element. ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属していない場合があります。However, custom attributes may not belong to any XML namespace that is reserved for CSDL. カスタム属性の完全修飾名は一意である必要があります。The fully-qualified names for any two custom attributes cannot be the same.

 

Example

次の例は、 CustomerOrdersの関連付けを定義するassociation要素を示しています。The following example shows an Association element that defines the CustomerOrders association. アソシエーションの各Endの複数要素の接続性の値は、顧客に複数の注文を関連付けることができることを示していますが、注文に関連付けることができるのは1つの顧客だけです。The Multiplicity values for each End of the association indicate that many Orders can be associated with a Customer, but only one Customer can be associated with an Order. また、 OnDelete要素は、顧客が削除された場合に、特定の顧客に関連付けられているすべての注文と ObjectContext に読み込まれたすべての注文を削除することを示します。Additionally, the OnDelete element indicates that all Orders that are related to a particular Customer and that have been loaded into the ObjectContext will be deleted if the Customer is deleted.

 <Association Name="CustomerOrders">
   <End Type="ExampleModel.Customer" Role="Customer" Multiplicity="1" />
   <End Type="ExampleModel.Order" Role="Order" Multiplicity="*">
         <OnDelete Action="Cascade" />
   </End>
 </Association>

 

AssociationSet 要素の子としての End 要素End Element as a Child of the AssociationSet Element

End要素は、アソシエーションセットの1つの端を指定します。The End element specifies one end of an association set. AssociationSet要素には、2つのEnd要素が含まれている必要があります。The AssociationSet element must contain two End elements. End要素に含まれる情報は、アソシエーションセットをデータソースにマップするときに使用されます。The information contained in an End element is used in mapping an association set to a data source.

終了要素には、次の子要素を含めることができます (一覧の順序)。An End element can have the following child elements (in the order listed):

  • Documentation (0 個または 1 個の要素)Documentation (zero or one element)
  • Annotation 要素 (0 個以上の要素)Annotation elements (zero or more elements)

注意

Annotation 要素は、それ以外のすべての子要素より後に指定する必要があります。Annotation elements must appear after all other child elements. Annotation 要素は、CSDL v2 以降でのみ使用できます。Annotation elements are only allowed in CSDL v2 and later.

 

該当する属性Applicable Attributes

次の表では、 AssociationSet要素の子である場合にEnd要素に適用できる属性について説明します。The following table describes the attributes that can be applied to the End element when it is the child of an AssociationSet element.

属性名Attribute Name 必須Is Required Value
EntitySetEntitySet はいYes AssociationSet要素の1つの end を定義するEntitySet要素の名前。The name of the EntitySet element that defines one end of the parent AssociationSet element. EntitySet要素は、親AssociationSet要素と同じエンティティコンテナーで定義されている必要があります。The EntitySet element must be defined in the same entity container as the parent AssociationSet element.
RoleRole いいえNo アソシエーション セット End の名前。The name of the association set end. Role属性が使用されていない場合、アソシエーションセット end の名前はエンティティセットの名前になります。If the Role attribute is not used, the name of the association set end will be the name of the entity set.

 

注意

任意の数の annotation 属性 (カスタム XML 属性) を 終了 要素に適用できます。Any number of annotation attributes (custom XML attributes) may be applied to the End element. ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属していない場合があります。However, custom attributes may not belong to any XML namespace that is reserved for CSDL. カスタム属性の完全修飾名は一意である必要があります。The fully-qualified names for any two custom attributes cannot be the same.

 

Example

次の例は、 2 つの3つの要素を持つAssociationSet要素を2つ持つEntityContainer要素を示しています。The following example shows an EntityContainer element with two AssociationSet elements, each with two End elements:

 <EntityContainer Name="BooksContainer" >
   <EntitySet Name="Books" EntityType="BooksModel.Book" />
   <EntitySet Name="Publishers" EntityType="BooksModel.Publisher" />
   <EntitySet Name="Authors" EntityType="BooksModel.Author" />
   <AssociationSet Name="PublishedBy" Association="BooksModel.PublishedBy">
     <End Role="Book" EntitySet="Books" />
     <End Role="Publisher" EntitySet="Publishers" />
   </AssociationSet>
   <AssociationSet Name="WrittenBy" Association="BooksModel.WrittenBy">
     <End Role="Book" EntitySet="Books" />
     <End Role="Author" EntitySet="Authors" />
   </AssociationSet>
 </EntityContainer>

 

 

EntityContainer 要素 (CSDL)EntityContainer Element (CSDL)

概念スキーマ定義言語 (CSDL) の EntityContainer 要素は、エンティティセット、アソシエーションセット、および関数インポートの論理コンテナーです。The EntityContainer element in conceptual schema definition language (CSDL) is a logical container for entity sets, association sets, and function imports. 概念モデルのエンティティ コンテナーは、EntityContainerMapping 要素を通じてストレージ モデルのエンティティ コンテナーにマップされます。A conceptual model entity container maps to a storage model entity container through the EntityContainerMapping element. ストレージ モデルのエンティティ コンテナーは、データベースの構造を記述します。エンティティ セットはデータベースのテーブル、アソシエーション セットは外部キー、関数インポートはストアド プロシージャをそれぞれ記述します。A storage model entity container describes the structure of the database: entity sets describe tables, association sets describe foreign key constraints, and function imports describe stored procedures in a database.

EntityContainer要素には、0個または1個の Documentation 要素を含めることができます。An EntityContainer element can have zero or one Documentation elements. Documentation要素が存在する場合は、 EntitySetAssociationSet、およびFunctionImportのすべての要素の前に記述する必要があります。If a Documentation element is present, it must precede all EntitySet, AssociationSet, and FunctionImport elements.

EntityContainer要素には、次の子要素を0個以上含めることができます (一覧の順序)。An EntityContainer element can have zero or more of the following child elements (in the order listed):

  • EntitySetEntitySet
  • AssociationSetAssociationSet
  • FunctionImport 要素FunctionImport
  • Annotation 要素Annotation elements

Entitycontainer要素を拡張して、同じ名前空間内にある別のentitycontainerの内容を含めることができます。You can extend an EntityContainer element to include the contents of another EntityContainer that is within the same namespace. 別の entitycontainerの内容を参照する entitycontainer 要素に含めるには、 Extends 属性の値を、含める entitycontainer 要素の名前に設定します。To include the contents of another EntityContainer, in the referencing EntityContainer element, set the value of the Extends attribute to the name of the EntityContainer element that you want to include. 含まれている entitycontainer 要素のすべての子要素は、参照している entitycontainer 要素の子要素として扱われます。All child elements of the included EntityContainer element will be treated as child elements of the referencing EntityContainer element.

該当する属性Applicable Attributes

次の表は、 Using 要素に適用できる属性を示しています。The table below describes the attributes that can be applied to the Using element.

属性名Attribute Name 必須Is Required Value
名前Name はいYes エンティティ コンテナー名。The name of the entity container.
拡張Extends いいえNo 同じ名前空間内にある別のエンティティ コンテナーの名前 The name of another entity container within the same namespace.

 

注意

任意の数の annotation 属性 (カスタム XML 属性) を EntityContainer 要素に適用できます。Any number of annotation attributes (custom XML attributes) may be applied to the EntityContainer element. ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属していない場合があります。However, custom attributes may not belong to any XML namespace that is reserved for CSDL. カスタム属性の完全修飾名は一意である必要があります。The fully-qualified names for any two custom attributes cannot be the same.

 

Example

次の例は、3つのエンティティセットと2つのアソシエーションセットを定義する EntityContainer 要素を示しています。The following example shows an EntityContainer element that defines three entity sets and two association sets.

 <EntityContainer Name="BooksContainer" >
   <EntitySet Name="Books" EntityType="BooksModel.Book" />
   <EntitySet Name="Publishers" EntityType="BooksModel.Publisher" />
   <EntitySet Name="Authors" EntityType="BooksModel.Author" />
   <AssociationSet Name="PublishedBy" Association="BooksModel.PublishedBy">
     <End Role="Book" EntitySet="Books" />
     <End Role="Publisher" EntitySet="Publishers" />
   </AssociationSet>
   <AssociationSet Name="WrittenBy" Association="BooksModel.WrittenBy">
     <End Role="Book" EntitySet="Books" />
     <End Role="Author" EntitySet="Authors" />
   </AssociationSet>
 </EntityContainer>

 

 

EntitySet 要素 (CSDL)EntitySet Element (CSDL)

概念スキーマ定義言語の EntitySet 要素は、エンティティ型のインスタンスと、そのエンティティ型から派生した任意の型のインスタンスの論理コンテナーです。The EntitySet element in conceptual schema definition language is a logical container for instances of an entity type and instances of any type that is derived from that entity type. エンティティ型とエンティティ セットの間のリレーションシップは、リレーショナル データベースの行とテーブルの間のリレーションシップと似ています。The relationship between an entity type and an entity set is analogous to the relationship between a row and a table in a relational database. エンティティ型は、行と同様に関連データのセットを定義し、エンティティ セットには、テーブルと同様に、その定義のインスタンスが含まれます。Like a row, an entity type defines a set of related data, and, like a table, an entity set contains instances of that definition. エンティティ セットは、エンティティ型のインスタンスをグループ化するための構造を提供します。これにより、データ ソース内の関連するデータ構造に、エンティティ型のインスタンスをマッピングできるようになります。An entity set provides a construct for grouping entity type instances so that they can be mapped to related data structures in a data source.  

特定のエンティティ型に対して複数のエンティティ セットを定義できます。More than one entity set for a particular entity type may be defined.

注意

EF デザイナーでは、型ごとに複数のエンティティセットを含む概念モデルはサポートされていません。The EF Designer does not support conceptual models that contain multiple entity sets per type.

 

EntitySet要素には、次の子要素を含めることができます (一覧の順序)。The EntitySet element can have the following child elements (in the order listed):

  • Documentation 要素 (0 個または 1 個の要素を含めることができます)。Documentation Element (zero or one elements allowed)
  • Annotation 要素 (0 個以上の要素を含めることができます)。Annotation elements (zero or more elements allowed)

該当する属性Applicable Attributes

次の表は、 EntitySet 要素に適用できる属性を示しています。The table below describes the attributes that can be applied to the EntitySet element.

属性名Attribute Name 必須Is Required Value
名前Name はいYes エンティティ セットの名前。The name of the entity set.
EntityTypeEntityType はいYes エンティティ型の完全修飾名。そのインスタンスは、エンティティ セットに格納されます。The fully-qualified name of the entity type for which the entity set contains instances.

 

注意

EntitySet要素には、任意の数の annotation 属性 (カスタム XML 属性) を適用できます。Any number of annotation attributes (custom XML attributes) may be applied to the EntitySet element. ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属していない場合があります。However, custom attributes may not belong to any XML namespace that is reserved for CSDL. カスタム属性の完全修飾名は一意である必要があります。The fully-qualified names for any two custom attributes cannot be the same.

 

Example

次の例は、3つのEntitySet要素を持つEntityContainer要素を示しています。The following example shows an EntityContainer element with three EntitySet elements:

 <EntityContainer Name="BooksContainer" >
   <EntitySet Name="Books" EntityType="BooksModel.Book" />
   <EntitySet Name="Publishers" EntityType="BooksModel.Publisher" />
   <EntitySet Name="Authors" EntityType="BooksModel.Author" />
   <AssociationSet Name="PublishedBy" Association="BooksModel.PublishedBy">
     <End Role="Book" EntitySet="Books" />
     <End Role="Publisher" EntitySet="Publishers" />
   </AssociationSet>
   <AssociationSet Name="WrittenBy" Association="BooksModel.WrittenBy">
     <End Role="Book" EntitySet="Books" />
     <End Role="Author" EntitySet="Authors" />
   </AssociationSet>
 </EntityContainer>

 

型ごとに複数のエンティティ セット (Multiple-Entity-Sets-per-Type: MEST) を定義できます。It is possible to define multiple entity sets per type (MEST). 次の例では、 Book エンティティ型に対して2つのエンティティセットを持つエンティティコンテナーを定義します。The following example defines an entity container with two entity sets for the Book entity type:

 <EntityContainer Name="BooksContainer" >
   <EntitySet Name="Books" EntityType="BooksModel.Book" />
   <EntitySet Name="FictionBooks" EntityType="BooksModel.Book" />
   <EntitySet Name="Publishers" EntityType="BooksModel.Publisher" />
   <EntitySet Name="Authors" EntityType="BooksModel.Author" />
   <AssociationSet Name="PublishedBy" Association="BooksModel.PublishedBy">
     <End Role="Book" EntitySet="Books" />
     <End Role="Publisher" EntitySet="Publishers" />
   </AssociationSet>
   <AssociationSet Name="BookAuthor" Association="BooksModel.BookAuthor">
     <End Role="Book" EntitySet="Books" />
     <End Role="Author" EntitySet="Authors" />
   </AssociationSet>
 </EntityContainer>

 

 

EntityType 要素 (CSDL)EntityType Element (CSDL)

EntityType要素は、概念モデルの最上位レベルの概念 (顧客や注文など) の構造を表します。The EntityType element represents the structure of a top-level concept, such as a customer or order, in a conceptual model. エンティティ型は、アプリケーションのエンティティ型インスタンス用テンプレートです。An entity type is a template for instances of entity types in an application. 各テンプレートには、次の情報が含まれています。Each template contains the following information:

  • 一意の名前 A unique name. (必須) (Required.)
  • 1 つ以上のプロパティにより定義されるエンティティ キー An entity key that is defined by one or more properties. (必須) (Required.)
  • データ格納用のプロパティ Properties for containing data. (省略可能) (Optional.)
  • アソシエーションの 1 つの End から別の End へのナビゲーションを可能にするナビゲーション プロパティ Navigation properties that allow for navigation from one end of an association to the other end. (省略可能) (Optional.)

アプリケーションでは、エンティティ型のインスタンスが特定のオブジェクト (特定の顧客や注文など) を表します。In an application, an instance of an entity type represents a specific object (such as a specific customer or order). エンティティ型の各インスタンスに対して、エンティティ セット内のエンティティ キーを一意にする必要があります。Each instance of an entity type must have a unique entity key within an entity set.

2 つのエンティティ型のインスタンスは、型が同じであり、エンティティ キーの値が等しい場合にのみ、等価のインスタンスと見なされます。Two entity type instances are considered equal only if they are of the same type and the values of their entity keys are the same.

EntityType要素には、次の子要素を含めることができます (この順序で表示されます)。An EntityType element can have the following child elements (in the order listed):

  • Documentation (0 個または 1 個の要素)Documentation (zero or one element)
  • Key (0 個または 1 個の要素)Key (zero or one element)
  • Property (0 個以上の要素)Property (zero or more elements)
  • NavigationProperty (0 個以上の要素)NavigationProperty (zero or more elements)
  • Annotation 要素 (0 個以上の要素)Annotation elements (zero or more elements)

該当する属性Applicable Attributes

次の表では、 EntityType 要素に適用できる属性について説明します。The table below describes the attributes that can be applied to the EntityType element.

属性名Attribute Name 必須Is Required Value
名前Name はいYes エンティティ型の名前。The name of the entity type.
BaseTypeBaseType いいえNo 定義するエンティティ型の基本の型である別のエンティティ型の名前。The name of another entity type that is the base type of the entity type that is being defined.
概要Abstract いいえNo エンティティ型が抽象型であるかどうかによって、 TrueまたはFalseになります。True or False, depending on whether the entity type is an abstract type.
OpenTypeOpenType いいえNo エンティティ型がオープンエンティティ型かどうかによって、 TrueまたはFalseになります。True or False depending on whether the entity type is an open entity type.
[!NOTE]
> OpenType 属性は、ADO.NET Data Services で使用される概念モデルで定義されているエンティティ型にのみ適用されます。> The OpenType attribute is only applicable to entity types that are defined in conceptual models that are used with ADO.NET Data Services.

 

注意

任意の数の annotation 属性 (カスタム XML 属性) を EntityType 要素に適用できます。Any number of annotation attributes (custom XML attributes) may be applied to the EntityType element. ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属していない場合があります。However, custom attributes may not belong to any XML namespace that is reserved for CSDL. カスタム属性の完全修飾名は一意である必要があります。The fully-qualified names for any two custom attributes cannot be the same.

 

Example

次の例は、3つのプロパティ要素と2つのNavigationProperty要素を持つEntityType要素を示しています。The following example shows an EntityType element with three Property elements and two NavigationProperty elements:

 <EntityType Name="Book">
   <Key>
     <PropertyRef Name="ISBN" />
   </Key>
   <Property Type="String" Name="ISBN" Nullable="false" />
   <Property Type="String" Name="Title" Nullable="false" />
   <Property Type="Decimal" Name="Revision" Nullable="false" Precision="29" Scale="29" />
   <NavigationProperty Name="Publisher" Relationship="BooksModel.PublishedBy"
                       FromRole="Book" ToRole="Publisher" />
   <NavigationProperty Name="Authors" Relationship="BooksModel.WrittenBy"
                       FromRole="Book" ToRole="Author" />
 </EntityType>

 

 

EnumType 要素 (CSDL)EnumType Element (CSDL)

EnumType要素は列挙型を表します。The EnumType element represents an enumerated type.

EnumType要素には、次の子要素を含めることができます (一覧の順序)。An EnumType element can have the following child elements (in the order listed):

  • Documentation (0 個または 1 個の要素)Documentation (zero or one element)
  • Member (0 個以上の要素)Member (zero or more elements)
  • Annotation 要素 (0 個以上の要素)Annotation elements (zero or more elements)

該当する属性Applicable Attributes

次の表は、 EnumType 要素に適用できる属性を示しています。The table below describes the attributes that can be applied to the EnumType element.

属性名Attribute Name 必須Is Required Value
名前Name はいYes エンティティ型の名前。The name of the entity type.
IsFlagsIsFlags いいえNo 列挙型をフラグのセットとして使用できるかどうかによって、 TrueまたはFalseTrue or False, depending on whether the enum type can be used as a set of flags. 既定値は False ですThe default value is False..
UnderlyingTypeUnderlyingType いいえNo Edm. Byte, Edm. Int16, edm. Int32, Edm. Int64 または edm. SByte 型の値の範囲を定義します。Edm.Byte, Edm.Int16, Edm.Int32, Edm.Int64 or Edm.SByte defining the range of values of the type. 列挙要素の基になる既定の型は、 Edm. Int32. です。  The default underlying type of enumeration elements is Edm.Int32..

 

注意

EnumType要素には、任意の数の annotation 属性 (カスタム XML 属性) を適用できます。Any number of annotation attributes (custom XML attributes) may be applied to the EnumType element. ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属していない場合があります。However, custom attributes may not belong to any XML namespace that is reserved for CSDL. カスタム属性の完全修飾名は一意である必要があります。The fully-qualified names for any two custom attributes cannot be the same.

 

Example

次の例は、3つのメンバー要素を持つEnumType要素を示しています。The following example shows an EnumType element with three Member elements:

 <EnumType Name="Color" IsFlags=”false” UnderlyingTyp=”Edm.Byte”>
   <Member Name="Red" />
   <Member Name="Green" />
   <Member Name="Blue" />
 </EntityType>

 

 

Function 要素 (CSDL)Function Element (CSDL)

概念スキーマ定義言語 (CSDL) の Function 要素は、概念モデルで関数を定義または宣言するために使用されます。The Function element in conceptual schema definition language (CSDL) is used to define or declare functions in the conceptual model. 関数は、DefiningExpression 要素を使用して定義されます。A function is defined by using a DefiningExpression element.  

Function要素には、次の子要素を含めることができます (順に記載されています)。A Function element can have the following child elements (in the order listed):

  • Documentation (0 個または 1 個の要素)Documentation (zero or one element)
  • Parameter (0 個以上の要素)Parameter (zero or more elements)
  • DefiningExpression (0 個または 1 個の要素)DefiningExpression (zero or one element)
  • ReturnType (Function) (0 個または1個の要素)ReturnType (Function) (zero or one element)
  • Annotation 要素 (0 個以上の要素)Annotation elements (zero or more elements)

関数の戻り値の型は、 returntype (function) 要素または returntype 属性 (下記参照) のいずれかで指定する必要がありますが、両方を指定することはできません。A return type for a function must be specified with either the ReturnType (Function) element or the ReturnType attribute (see below), but not both. 有効な戻り値の型には、EdmSimpleType、エンティティ型、複合型、行型、または参照型 (あるいはこれらの型のいずれかのコレクション) があります。The possible return types are any EdmSimpleType, entity type, complex type, row type, or ref type (or a collection of one of these types).

該当する属性Applicable Attributes

次の表では、 Function 要素に適用できる属性について説明します。The table below describes the attributes that can be applied to the Function element.

属性名Attribute Name 必須Is Required Value
名前Name はいYes 関数の名前。The name of the function.
ReturnTypeReturnType いいえNo 関数の戻り値の型。The type returned by the function.

 

注意

関数要素には、任意の数の annotation 属性 (カスタム XML 属性) を適用できます。Any number of annotation attributes (custom XML attributes) may be applied to the Function element. ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属していない場合があります。However, custom attributes may not belong to any XML namespace that is reserved for CSDL. カスタム属性の完全修飾名は一意である必要があります。The fully-qualified names for any two custom attributes cannot be the same.

 

Example

次の例では、 関数 要素を使用して、インストラクターが雇用されてからの年数を返す関数を定義しています。The following example uses a Function element to define a function that returns the number of years since an instructor was hired.

 <Function Name="YearsSince" ReturnType="Edm.Int32">
   <Parameter Name="date" Type="Edm.DateTime" />
   <DefiningExpression>
     Year(CurrentDateTime()) - Year(date)
   </DefiningExpression>
 </Function>

 

 

FunctionImport 要素 (CSDL)FunctionImport Element (CSDL)

概念スキーマ定義言語 (CSDL) の FunctionImport 要素は、データソースで定義されているものの、概念モデルを通じてオブジェクトで使用できる関数を表します。The FunctionImport element in conceptual schema definition language (CSDL) represents a function that is defined in the data source but available to objects through the conceptual model. たとえば、ストレージ モデルの Function 要素を使用して、データベースのストアド プロシージャを表すことができます。For example, a Function element in the storage model can be used to represent a stored procedure in a database. 概念モデルの FunctionImport 要素は、Entity Framework アプリケーション内の対応する関数を表し、FunctionImportMapping 要素を使用してストレージモデル関数にマップされます。A FunctionImport element in the conceptual model represents the corresponding function in an Entity Framework application and is mapped to the storage model function by using the FunctionImportMapping element. 関数がアプリケーションで呼び出されると、対応するストアド プロシージャがデータベースで実行されます。When the function is called in the application, the corresponding stored procedure is executed in the database.

FunctionImport要素には、次の子要素を含めることができます (この順序で表示されます)。The FunctionImport element can have the following child elements (in the order listed):

  • Documentation (0 または 1 つの要素を含めることができます)。Documentation (zero or one elements allowed)
  • Parameter (0 個以上の要素を含めることができます)。Parameter (zero or more elements allowed)
  • Annotation 要素 (0 個以上の要素を含めることができます)。Annotation elements (zero or more elements allowed)
  • ReturnType (FunctionImport) (0 個以上の要素を使用できます)ReturnType (FunctionImport) (zero or more elements allowed)

関数が受け入れるパラメーターごとに1つの パラメーター 要素を定義する必要があります。One Parameter element should be defined for each parameter that the function accepts.

関数の戻り値の型は、 returntype (FunctionImport) 要素または returntype 属性 (下記参照) のいずれかで指定する必要がありますが、両方を指定することはできません。A return type for a function must be specified with either the ReturnType (FunctionImport) element or the ReturnType attribute (see below), but not both. 戻り値の型の値は、EdmSimpleType、EntityType、または ComplexType のコレクションである必要があります。The return type value must be a  collection of EdmSimpleType, EntityType, or ComplexType.

該当する属性Applicable Attributes

次の表は、 FunctionImport 要素に適用できる属性を示しています。The table below describes the attributes that can be applied to the FunctionImport element.

属性名Attribute Name 必須Is Required Value
名前Name はいYes インポートされる関数の名前。The name of the imported function.
ReturnTypeReturnType いいえNo 関数が返す型。The type that the function returns. 関数が値を返さない場合は、この属性を使用しないでください。Do not use this attribute if the function does not return a value. それ以外の場合、値は ComplexType、EntityType、または EDMSimpleType のコレクションである必要があります。Otherwise, the value must be a collection of ComplexType, EntityType, or EDMSimpleType.
EntitySetEntitySet いいえNo 関数がエンティティ型のコレクションを返す場合、 EntitySet の値は、コレクションが属するエンティティセットである必要があります。If the function returns a collection of entity types, the value of the EntitySet must be the entity set to which the collection belongs. そうでない場合は、 EntitySet 属性を使用しないでください。Otherwise, the EntitySet attribute must not be used.
IsComposableIsComposable いいえNo 値が true に設定されている場合、関数はコンポーザブル (テーブル値関数) であり、LINQ クエリで使用できます。If the value is set to true, the function is composable (Table-valued Function) and can be used in a LINQ query.既定値は false です。  The default is false.

 

注意

任意の数の annotation 属性 (カスタム XML 属性) を FunctionImport 要素に適用できます。Any number of annotation attributes (custom XML attributes) may be applied to the FunctionImport element. ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属していない場合があります。However, custom attributes may not belong to any XML namespace that is reserved for CSDL. カスタム属性の完全修飾名は一意である必要があります。The fully-qualified names for any two custom attributes cannot be the same.

 

Example

次の例は、1つのパラメーターを受け取り、エンティティ型のコレクションを返す FunctionImport 要素を示しています。The following example shows a FunctionImport element that accepts one parameter and returns a collection of entity types:

 <FunctionImport Name="GetStudentGrades"
                 EntitySet="StudentGrade"
                 ReturnType="Collection(SchoolModel.StudentGrade)">
        <Parameter Name="StudentID" Mode="In" Type="Int32" />
 </FunctionImport>

 

 

key 要素 (CSDL)Key Element (CSDL)

Key要素は EntityType 要素の子要素であり、エンティティキー (id を決定するエンティティ型のプロパティまたはプロパティのセット) を定義します。The Key element is a child element of the EntityType element and defines an entity key (a property or a set of properties of an entity type that determine identity). エンティティ キーを構成するプロパティは、デザイン時に選択されます。The properties that make up an entity key are chosen at design time. エンティティ キー プロパティの値は、実行時のエンティティ セット内のエンティティ型のインスタンスを一意に識別する必要があります。The values of entity key properties must uniquely identify an entity type instance within an entity set at run time. エンティティ キーを構成するプロパティには、エンティティ セット内のインスタンスの一意性を保証するものを選択する必要があります。The properties that make up an entity key should be chosen to guarantee uniqueness of instances in an entity set. Key要素は、エンティティ型の1つ以上のプロパティを参照することによって、エンティティキーを定義します。The Key element defines an entity key by referencing one or more of the properties of an entity type.

Key要素には、次の子要素を含めることができます。The Key element can have the following child elements:

  • PropertyRef (1 個以上の要素)PropertyRef (one or more elements)
  • Annotation 要素 (0 個以上の要素)Annotation elements (zero or more elements)

該当する属性Applicable Attributes

任意の数の annotation 属性 (カスタム XML 属性) を キー 要素に適用できます。Any number of annotation attributes (custom XML attributes) may be applied to the Key element. ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属していない場合があります。However, custom attributes may not belong to any XML namespace that is reserved for CSDL. カスタム属性の完全修飾名は一意である必要があります。The fully-qualified names for any two custom attributes cannot be the same.

Example

次の例では、 Bookという名前のエンティティ型を定義しています。The example below defines an entity type named Book. エンティティキーは、エンティティ型の ISBN プロパティを参照することによって定義されます。The entity key is defined by referencing the ISBN property of the entity type.

 <EntityType Name="Book">
   <Key>
     <PropertyRef Name="ISBN" />
   </Key>
   <Property Type="String" Name="ISBN" Nullable="false" />
   <Property Type="String" Name="Title" Nullable="false" />
   <Property Type="Decimal" Name="Revision" Nullable="false" Precision="29" Scale="29" />
   <NavigationProperty Name="Publisher" Relationship="BooksModel.PublishedBy"
                       FromRole="Book" ToRole="Publisher" />
   <NavigationProperty Name="Authors" Relationship="BooksModel.WrittenBy"
                       FromRole="Book" ToRole="Author" />
 </EntityType>

 

Isbnプロパティは、国際標準書籍番号 (ISBN) が書籍を一意に識別するため、エンティティキーに適した選択肢です。The ISBN property is a good choice for the entity key because an International Standard Book Number (ISBN) uniquely identifies a book.

次の例は、名前アドレスの2つのプロパティで構成されるエンティティキーを持つエンティティ型 (Author) を示しています。The following example shows an entity type (Author) that has an entity key that consists of two properties, Name and Address.

 <EntityType Name="Author">
   <Key>
     <PropertyRef Name="Name" />
     <PropertyRef Name="Address" />
   </Key>
   <Property Type="String" Name="Name" Nullable="false" />
   <Property Type="String" Name="Address" Nullable="false" />
   <NavigationProperty Name="Books" Relationship="BooksModel.WrittenBy"
                       FromRole="Author" ToRole="Book" />
 </EntityType>

 

同じ名前の2人の作成者が同じアドレスに住んでいる可能性が低いため、エンティティキーには 名前アドレス を使用することをお勧めします。Using Name and Address for the entity key is a reasonable choice, because two authors of the same name are unlikely to live at the same address. ただし、エンティティ キーのこの選択では、エンティティ セット内のエンティティ キーの一意性を絶対的に保証することはできません。However, this choice for an entity key does not absolutely guarantee unique entity keys in an entity set. この場合は、作成者を一意に識別するために使用できる、 AuthorIdなどのプロパティを追加することをお勧めします。Adding a property, such as AuthorId, that could be used to uniquely identify an author would be recommended in this case.

 

Member 要素 (CSDL)Member Element (CSDL)

Member要素は EnumType 要素の子要素であり、列挙型のメンバーを定義します。The Member element is a child element of the EnumType element and defines a member of the enumerated type.

該当する属性Applicable Attributes

次の表は、 FunctionImport 要素に適用できる属性を示しています。The table below describes the attributes that can be applied to the FunctionImport element.

属性名Attribute Name 必須Is Required Value
名前Name はいYes メンバーの名前。The name of the member.
ValueValue いいえNo メンバーの値。The value of the member. 既定では、最初のメンバーの値は0で、連続する各列挙子の値は1ずつインクリメントされます。By default, the first member has the value 0, and the value of each successive enumerator is incremented by 1. 同じ値を持つ複数のメンバーが存在する場合があります。Multiple members with the same values may exist.

 

注意

任意の数の annotation 属性 (カスタム XML 属性) を FunctionImport 要素に適用できます。Any number of annotation attributes (custom XML attributes) may be applied to the FunctionImport element. ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属していない場合があります。However, custom attributes may not belong to any XML namespace that is reserved for CSDL. カスタム属性の完全修飾名は一意である必要があります。The fully-qualified names for any two custom attributes cannot be the same.

 

Example

次の例は、3つのメンバー要素を持つEnumType要素を示しています。The following example shows an EnumType element with three Member elements:

 <EnumType Name="Color">
   <Member Name="Red" Value=”1”/>
   <Member Name="Green" Value=”3” />
   <Member Name="Blue" Value=”5”/>
 </EntityType>

 

 

NavigationProperty要素は、アソシエーションのもう一方の end への参照を提供するナビゲーションプロパティを定義します。A NavigationProperty element defines a navigation property, which provides a reference to the other end of an association. Property 要素で定義されるプロパティとは異なり、ナビゲーション プロパティはデータの形と特性を定義しません。Unlike properties defined with the Property element, navigation properties do not define the shape and characteristics of data. ナビゲーション プロパティは、アソシエーション内で 2 つのエンティティ型間を移動するための手段を提供します。They provide a way to navigate an association between two entity types.

ナビゲーション プロパティは、アソシエーション End の両方のエンティティ型で省略可能です。Note that navigation properties are optional on both entity types at the ends of an association. 1 つのアソシエーション End のエンティティ型にナビゲーション プロパティを定義した場合に、そのアソシエーションの他方の End でもエンティティ型にナビゲーション プロパティを定義する必要はありません。If you define a navigation property on one entity type at the end of an association, you do not have to define a navigation property on the entity type at the other end of the association.

ナビゲーション プロパティによって返されるデータ型は、リモートのアソシエーション End の多重度により決まります。The data type returned by a navigation property is determined by the multiplicity of its remote association end. たとえば、ナビゲーションプロパティ Ordersnavpropcustomer エンティティ型に存在し、 customerOrderの間に一対多のアソシエーションを移動するとします。For example, suppose a navigation property, OrdersNavProp, exists on a Customer entity type and navigates a one-to-many association between Customer and Order. ナビゲーションプロパティのリモートアソシエーション end は多重度が多 () であるため * 、そのデータ型はコレクション ( 順序) です。Because the remote association end for the navigation property has multiplicity many (*), its data type is a collection (of Order). 同様に、ナビゲーションプロパティの Customer navigation propOrder エンティティ型に存在する場合、リモート end の多重度は 1 (1) であるため、データ型は 顧客 になります。Similarly, if a navigation property, CustomerNavProp, exists on the Order entity type, its data type would be Customer since the multiplicity of the remote end is one (1).

NavigationProperty要素には、次の子要素を含めることができます (この順序で表示されます)。A NavigationProperty element can have the following child elements (in the order listed):

  • Documentation (0 個または 1 個の要素)Documentation (zero or one element)
  • Annotation 要素 (0 個以上の要素)Annotation elements (zero or more elements)

該当する属性Applicable Attributes

次の表では、 NavigationProperty 要素に適用できる属性について説明します。The table below describes the attributes that can be applied to the NavigationProperty element.

属性名Attribute Name 必須Is Required Value
名前Name はいYes ナビゲーション プロパティの名前。The name of the navigation property.
リレーションシップRelationship はいYes モデルのスコープ内にあるアソシエーションの名前。The name of an association that is within the scope of the model.
ToRoleToRole はいYes ナビゲーションが終了する側のアソシエーション End。The end of the association at which navigation ends. Torole属性の値は、アソシエーション end のいずれかで定義されているロール属性の1つの値と同じである必要があります (associationend 要素で定義されています)。The value of the ToRole attribute must be the same as the value of one of the Role attributes defined on one of the association ends (defined in the AssociationEnd element).
FromRoleFromRole はいYes ナビゲーションが始まる側のアソシエーション End。The end of the association from which navigation begins. Fromrole属性の値は、アソシエーション end のいずれかで定義されているいずれかのロール属性の値と同じである必要があります (associationend 要素で定義されています)。The value of the FromRole attribute must be the same as the value of one of the Role attributes defined on one of the association ends (defined in the AssociationEnd element).

 

注意

任意の数の annotation 属性 (カスタム XML 属性) を NavigationProperty 要素に適用できます。Any number of annotation attributes (custom XML attributes) may be applied to the NavigationProperty element. ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属していない場合があります。However, custom attributes may not belong to any XML namespace that is reserved for CSDL. カスタム属性の完全修飾名は一意である必要があります。The fully-qualified names for any two custom attributes cannot be the same.

 

Example

次の例では、2つのナビゲーションプロパティ (publishedby writ) を持つエンティティ型 (Book) を定義します。The following example defines an entity type (Book) with two navigation properties (PublishedBy and WrittenBy):

 <EntityType Name="Book">
   <Key>
     <PropertyRef Name="ISBN" />
   </Key>
   <Property Type="String" Name="ISBN" Nullable="false" />
   <Property Type="String" Name="Title" Nullable="false" />
   <Property Type="Decimal" Name="Revision" Nullable="false" Precision="29" Scale="29" />
   <NavigationProperty Name="Publisher" Relationship="BooksModel.PublishedBy"
                       FromRole="Book" ToRole="Publisher" />
   <NavigationProperty Name="Authors" Relationship="BooksModel.WrittenBy"
                       FromRole="Book" ToRole="Author" />
 </EntityType>

 

 

OnDelete 要素 (CSDL)OnDelete Element (CSDL)

概念スキーマ定義言語 (CSDL) の OnDelete 要素は、アソシエーションに関連付けられている動作を定義します。The OnDelete element in conceptual schema definition language (CSDL) defines behavior that is connected with an association. アクション属性がアソシエーションの一方の End でCascadeに設定されている場合、最初の end のエンティティ型が削除されると、アソシエーションのもう一方の end に関連するエンティティ型が削除されます。If the Action attribute is set to Cascade on one end of an association, related entity types on the other end of the association are deleted when the entity type on the first end is deleted. 2つのエンティティ型間のアソシエーションが主キーと主キーのリレーションシップである場合、アソシエーションのもう一方の end のプリンシパルオブジェクトが OnDelete の仕様に関係なく削除されると、読み込まれた依存オブジェクトが削除されます。If the association between two entity types is a primary key-to-primary key relationship, then a loaded dependent object is deleted when the principal object on the other end of the association is deleted regardless of the OnDelete specification.  

注意

OnDelete要素は、アプリケーションの実行時の動作にのみ影響します。データソースの動作には影響しません。The OnDelete element only affects the runtime behavior of an application; it does not affect behavior in the data source. データ ソースで定義された動作は、アプリケーションで定義された動作と同じである必要があります。The behavior defined in the data source should be the same as the behavior defined in the application.

 

OnDelete要素には、次の子要素を含めることができます (一覧の順序)。An OnDelete element can have the following child elements (in the order listed):

  • Documentation (0 個または 1 個の要素)Documentation (zero or one element)
  • Annotation 要素 (0 個以上の要素)Annotation elements (zero or more elements)

該当する属性Applicable Attributes

次の表は、 OnDelete 要素に適用できる属性を示しています。The table below describes the attributes that can be applied to the OnDelete element.

属性名Attribute Name 必須Is Required Value
操作Action はいYes Cascade または NoneCascade or None. Cascadeを指定すると、プリンシパルエンティティ型が削除されるときに依存エンティティ型が削除されます。If Cascade, dependent entity types will be deleted when the principal entity type is deleted. 存在 しない場合、 プリンシパルエンティティ型が削除されても依存エンティティ型は削除されません。If None, dependent entity types will not be deleted when the principal entity type is deleted.

 

注意

任意の数の annotation 属性 (カスタム XML 属性) を Association 要素に適用できます。Any number of annotation attributes (custom XML attributes) may be applied to the Association element. ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属していない場合があります。However, custom attributes may not belong to any XML namespace that is reserved for CSDL. カスタム属性の完全修飾名は一意である必要があります。The fully-qualified names for any two custom attributes cannot be the same.

 

Example

次の例は、 CustomerOrdersの関連付けを定義するassociation要素を示しています。The following example shows an Association element that defines the CustomerOrders association. OnDelete要素は、特定の顧客に関連付けられているすべての注文が ObjectContext に読み込まれていることを示します。これは、顧客が削除されると削除されます。The OnDelete element indicates that all Orders that are related to a particular Customer and have been loaded into the ObjectContext will be deleted when the Customer is deleted.

 <Association Name="CustomerOrders">
   <End Type="ExampleModel.Customer" Role="Customer" Multiplicity="1">
         <OnDelete Action="Cascade" />
   </End>
   <End Type="ExampleModel.Order" Role="Order" Multiplicity="*" />
 </Association>

 

 

Parameter 要素 (CSDL)Parameter Element (CSDL)

概念スキーマ定義言語 (CSDL) の Parameter 要素は、FunctionImport 要素または Function 要素の子にすることができます。The Parameter element in conceptual schema definition language (CSDL) can be a child of the FunctionImport element or the Function element.

FunctionImport 要素のアプリケーションFunctionImport Element Application

パラメーター要素 ( FunctionImport要素の子として) は、CSDL で宣言された関数インポートの入力パラメーターと出力パラメーターを定義するために使用されます。A Parameter element (as a child of the FunctionImport element) is used to define input and output parameters for function imports that are declared in CSDL.

Parameter要素には、次の子要素を含めることができます (一覧の順序)。The Parameter element can have the following child elements (in the order listed):

  • Documentation (0 または 1 つの要素を含めることができます)。Documentation (zero or one elements allowed)
  • Annotation 要素 (0 個以上の要素を含めることができます)。Annotation elements (zero or more elements allowed)

該当する属性Applicable Attributes

次の表では、 Parameter 要素に適用できる属性について説明します。The following table describes the attributes that can be applied to the Parameter element.

属性名Attribute Name 必須Is Required Value
名前Name はいYes パラメーターの名前。The name of the parameter.
TypeType はいYes パラメーターの型。The parameter type. この値には、 EDMSimpleType か、モデルのスコープ内にある複合型を指定する必要があります。The value must be an EDMSimpleType or a complex type that is within the scope of the model.
モードMode いいえNo InOut、または InOut は、パラメーターが入力パラメーター、出力パラメーター、または入力/出力パラメーターのどちらであるかによって異なります。In, Out, or InOut depending on whether the parameter is an input, output, or input/output parameter.
MaxLengthMaxLength いいえNo パラメーターの許容される最大長The maximum allowed length of the parameter.
[精度]Precision いいえNo パラメーターの説明The precision of the parameter.
スケールScale いいえNo パラメーターの小数点以下桁数The scale of the parameter.
SRIDSRID いいえNo 空間システム参照識別子。Spatial System Reference Identifier. 空間型のパラメーターに対してのみ有効です。Valid only for parameters of spatial types. 詳細については、「 SRID and SRID (SQL Server)」を参照してください。For more information, see SRID and SRID (SQL Server).

 

注意

パラメーター要素には、任意の数の annotation 属性 (カスタム XML 属性) を適用できます。Any number of annotation attributes (custom XML attributes) may be applied to the Parameter element. ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属していない場合があります。However, custom attributes may not belong to any XML namespace that is reserved for CSDL. カスタム属性の完全修飾名は一意である必要があります。The fully-qualified names for any two custom attributes cannot be the same.

 

Example

次の例は、1つのParameter子要素を持つFunctionImport要素を示しています。The following example shows a FunctionImport element with one Parameter child element. 関数は、1 つの入力パラメーターを受け取り、エンティティ型のコレクションを返します。The function accepts one input parameter and returns a collection of entity types.

 <FunctionImport Name="GetStudentGrades"
                 EntitySet="StudentGrade"
                 ReturnType="Collection(SchoolModel.StudentGrade)">
        <Parameter Name="StudentID" Mode="In" Type="Int32" />
 </FunctionImport>

 

Function 要素のアプリケーションFunction Element Application

Parameter要素 ( Function要素の子として) は、概念モデルで定義または宣言されている関数のパラメーターを定義します。A Parameter element (as a child of the Function element) defines parameters for functions that are defined or declared in a conceptual model.

Parameter要素には、次の子要素を含めることができます (一覧の順序)。The Parameter element can have the following child elements (in the order listed):

  • Documentation (0 個または 1 個の要素)Documentation (zero or one elements)
  • CollectionType (0 個または 1 個の要素)CollectionType (zero or one elements)
  • ReferenceType (0 個または 1 個の要素)ReferenceType (zero or one elements)
  • RowType (0 個または 1 個の要素)RowType (zero or one elements)

注意

CollectionTypeReferenceType、またはRowType要素のいずれか1つだけをProperty要素の子要素にすることができます。Only one of the CollectionType, ReferenceType, or RowType elements can be a child element of a Property element.

 

  • Annotation 要素 (0 個以上の要素を含めることができます)。Annotation elements (zero or more elements allowed)

注意

Annotation 要素は、それ以外のすべての子要素より後に指定する必要があります。Annotation elements must appear after all other child elements. Annotation 要素は、CSDL v2 以降でのみ使用できます。Annotation elements are only allowed in CSDL v2 and later.

 

該当する属性Applicable Attributes

次の表では、 Parameter 要素に適用できる属性について説明します。The following table describes the attributes that can be applied to the Parameter element.

属性名Attribute Name 必須Is Required Value
名前Name はいYes パラメーターの名前。The name of the parameter.
TypeType いいえNo パラメーターの型。The parameter type. パラメーターには次のいずれかの型 (またはこれらの型のコレクション) を使用できます。A parameter can be any of the following types (or collections of these types):
EdmSimpleTypeEdmSimpleType
エンティティ型entity type
複合型complex type
行型row type
参照型reference type
NULL 値の使用Nullable いいえNo プロパティがnull値を持つことができるかどうかによって、 True (既定値) またはFalseTrue (the default value) or False depending on whether the property can have a null value.
既定DefaultValue いいえNo プロパティの既定値です。The default value of the property.
MaxLengthMaxLength いいえNo プロパティ値の最大長。The maximum length of the property value.
FixedLengthFixedLength いいえNo プロパティ値が固定長文字列として格納されるかどうかによって、 TrueまたはFalseになります。True or False depending on whether the property value will be stored as a fixed length string.
[精度]Precision いいえNo プロパティ値の有効桁数。The precision of the property value.
スケールScale いいえNo プロパティ値の小数点以下桁数。The scale of the property value.
SRIDSRID いいえNo 空間システム参照識別子。Spatial System Reference Identifier. 空間型のプロパティに対してのみ有効です。Valid only for properties of spatial types. 詳細については、「 SRID and SRID (SQL Server)」を参照してください。For more information, see SRID and SRID (SQL Server).
UnicodeUnicode いいえNo プロパティ値が Unicode 文字列として格納されるかどうかによって、 TrueまたはFalseになります。True or False depending on whether the property value will be stored as a Unicode string.
CollationCollation いいえNo データ ソースで使用される照合順序を指定する文字列。A string that specifies the collating sequence to be used in the data source.

 

注意

パラメーター要素には、任意の数の annotation 属性 (カスタム XML 属性) を適用できます。Any number of annotation attributes (custom XML attributes) may be applied to the Parameter element. ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属していない場合があります。However, custom attributes may not belong to any XML namespace that is reserved for CSDL. カスタム属性の完全修飾名は一意である必要があります。The fully-qualified names for any two custom attributes cannot be the same.

 

Example

次の例は、1つのparameter子要素を使用して関数パラメーターを定義する関数要素を示しています。The following example shows a Function element that uses one Parameter child element to define a function parameter.

 <Function Name="GetYearsEmployed" ReturnType="Edm.Int32">
 <Parameter Name="Instructor" Type="SchoolModel.Person" />
   <DefiningExpression>
   Year(CurrentDateTime()) - Year(cast(Instructor.HireDate as DateTime))
   </DefiningExpression>
 </Function>

 

Principal 要素 (CSDL)Principal Element (CSDL)

概念スキーマ定義言語 (CSDL) の principal 要素は、参照制約のプリンシパル end を定義する、参照制約要素の子要素です。The Principal element in conceptual schema definition language (CSDL) is a child element to the ReferentialConstraint element that defines the principal end of a referential constraint. 参照整合性の 制約要素は、リレーショナル データベースの参照整合性制約に似た機能を定義します。A ReferentialConstraint element defines functionality that is similar to a referential integrity constraint in a relational database. データベース テーブルの列が別のテーブルの主キーを参照できるのと同じように、エンティティ型のプロパティが別のエンティティ型のエンティティ キーを参照できます。In the same way that a column (or columns) from a database table can reference the primary key of another table, a property (or properties) of an entity type can reference the entity key of another entity type. 参照されるエンティティ型は、制約の "プリンシパル End" と呼ばれます。The entity type that is referenced is called the principal end of the constraint. プリンシパル End を参照するエンティティ型は、制約の "依存 End" と呼ばれます。The entity type that references the principal end is called the dependent end of the constraint. Propertyref 要素は、依存 end によって参照されるキーを指定するために使用されます。PropertyRef elements are used to specify which keys are referenced by the dependent end.

Principal要素には、次の子要素を含めることができます (順に記載されています)。The Principal element can have the following child elements (in the order listed):

  • PropertyRef (1 個以上の要素)PropertyRef (one or more elements)
  • Annotation 要素 (0 個以上の要素)Annotation elements (zero or more elements)

該当する属性Applicable Attributes

次の表では、 Principal 要素に適用できる属性について説明します。The table below describes the attributes that can be applied to the Principal element.

属性名Attribute Name 必須Is Required Value
ロールRole はいYes アソシエーションのプリンシパル End 上のエンティティ型の名前。The name of the entity type on the principal end of the association.

 

注意

Principal要素には、任意の数の annotation 属性 (カスタム XML 属性) を適用できます。Any number of annotation attributes (custom XML attributes) may be applied to the Principal element. ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属していない場合があります。However, custom attributes may not belong to any XML namespace that is reserved for CSDL. カスタム属性の完全修飾名は一意である必要があります。The fully-qualified names for any two custom attributes cannot be the same.

 

Example

次の例では、 publishedby関連付けの定義の一部である 、オブジェクトの場所を示します。The following example shows a ReferentialConstraint element that is part of the definition of the PublishedBy association. 参照に関する制約のプリンシパル end は、パブリッシャーエンティティ型のIdプロパティによって構成されます。The Id property of the Publisher entity type makes up the principal end of the referential constraint.

 <Association Name="PublishedBy">
   <End Type="BooksModel.Book" Role="Book" Multiplicity="*" >
   </End>
   <End Type="BooksModel.Publisher" Role="Publisher" Multiplicity="1" />
   <ReferentialConstraint>
     <Principal Role="Publisher">
       <PropertyRef Name="Id" />
     </Principal>
     <Dependent Role="Book">
       <PropertyRef Name="PublisherId" />
     </Dependent>
   </ReferentialConstraint>
 </Association>

 

 

Property 要素 (CSDL)Property Element (CSDL)

概念スキーマ定義言語 (CSDL) の Property 要素は、EntityType 要素、ComplexType 要素、または RowType 要素の子にすることができます。The Property element in conceptual schema definition language (CSDL) can be a child of the EntityType element, the ComplexType element, or the RowType element.

EntityType 要素と ComplexType 要素のアプリケーションEntityType and ComplexType Element Applications

プロパティ 要素 ( EntityType または ComplexType 要素の子として) は、エンティティ型インスタンスまたは複合型インスタンスに格納されるデータの構造と特性を定義します。Property elements (as children of EntityType or ComplexType elements) define the shape and characteristics of data that an entity type instance or complex type instance will contain. 概念モデルのプロパティは、クラスで定義されるプロパティに似ています。Properties in a conceptual model are analogous to properties that are defined on a class. クラスのプロパティがクラスの構造を定義し、オブジェクトに関する情報を伝達するのと同様に、概念モデルのプロパティはエンティティ型の構造を定義し、エンティティ型のインスタンスに関する情報を伝達します。In the same way that properties on a class define the shape of the class and carry information about objects, properties in a conceptual model define the shape of an entity type and carry information about entity type instances.

Property要素には、次の子要素を含めることができます (一覧の順序)。The Property element can have the following child elements (in the order listed):

  • Documentation 要素 (0 個または 1 個の要素を含めることができます)。Documentation Element (zero or one elements allowed)
  • Annotation 要素 (0 個以上の要素を含めることができます)。Annotation elements (zero or more elements allowed)

次のファセットは、 プロパティ 要素に適用できます。 NullableDefaultValueMaxLengthFixedLengthPrecisionScaleUnicodeCollationConcurrencyModeThe following facets can be applied to a Property element: Nullable, DefaultValue, MaxLength, FixedLength, Precision, Scale, Unicode, Collation, ConcurrencyMode. ファセットは、プロパティ値をデータ ストアに格納する方法に関する情報を提供する XML 属性です。Facets are XML attributes that provide information about how property values are stored in the data store.

注意

ファセットは、 Edmsimpletype型のプロパティにのみ適用できます。Facets can only be applied to properties of type EDMSimpleType.

 

該当する属性Applicable Attributes

次の表では、 Property 要素に適用できる属性について説明します。The following table describes the attributes that can be applied to the Property element.

属性名Attribute Name 必須Is Required Value
名前Name はいYes プロパティの名前。The name of the property.
TypeType はいYes プロパティ値の型です。The type of the property value. プロパティ値の型は、 EDMSimpleType か、モデルのスコープ内にある (完全修飾名で表された) 複合型を指定する必要があります。The property value type must be an EDMSimpleType or a complex type (indicated by a fully-qualified name) that is within scope of the model.
NULL 値の使用Nullable いいえNo プロパティに null 値を指定できるかどうかに応じて、True (既定値) または FalseTrue (the default value) or False depending on whether the property can have a null value.
[!NOTE]
CSDL v1 の > 複合型プロパティにはが必要 Nullable="False" です。> In the CSDL v1 a complex type property must have Nullable="False".
既定DefaultValue いいえNo プロパティの既定値です。The default value of the property.
MaxLengthMaxLength いいえNo プロパティ値の最大長。The maximum length of the property value.
FixedLengthFixedLength いいえNo プロパティ値が固定長文字列として格納されるかどうかによって、 TrueまたはFalseになります。True or False depending on whether the property value will be stored as a fixed length string.
[精度]Precision いいえNo プロパティ値の有効桁数。The precision of the property value.
スケールScale いいえNo プロパティ値の小数点以下桁数。The scale of the property value.
SRIDSRID いいえNo 空間システム参照識別子。Spatial System Reference Identifier. 空間型のプロパティに対してのみ有効です。Valid only for properties of spatial types. 詳細については、「 SRID and SRID (SQL Server)」を参照してください。For more information, see SRID and SRID (SQL Server).
UnicodeUnicode いいえNo プロパティ値が Unicode 文字列として格納されるかどうかによって、 TrueまたはFalseになります。True or False depending on whether the property value will be stored as a Unicode string.
CollationCollation いいえNo データ ソースで使用される照合順序を指定する文字列。A string that specifies the collating sequence to be used in the data source.
ConcurrencyModeConcurrencyMode いいえNo None (既定値) または FixedNone (the default value) or Fixed. 値が Fixedに設定されている場合、プロパティ値はオプティミスティック コンカレンシーチェックで使用されます。If the value is set to Fixed, the property value will be used in optimistic concurrency checks.

 

注意

プロパティ要素には、任意の数の annotation 属性 (カスタム XML 属性) を適用できます。Any number of annotation attributes (custom XML attributes) may be applied to the Property element. ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属していない場合があります。However, custom attributes may not belong to any XML namespace that is reserved for CSDL. カスタム属性の完全修飾名は一意である必要があります。The fully-qualified names for any two custom attributes cannot be the same.

 

Example

次の例は、3つのProperty要素を持つEntityType要素を示しています。The following example shows an EntityType element with three Property elements:

 <EntityType Name="Book">
   <Key>
     <PropertyRef Name="ISBN" />
   </Key>
   <Property Type="String" Name="ISBN" Nullable="false" />
   <Property Type="String" Name="Title" Nullable="false" />
   <Property Type="Decimal" Name="Revision" Nullable="false" Precision="29" Scale="29" />
   <NavigationProperty Name="Publisher" Relationship="BooksModel.PublishedBy"
                       FromRole="Book" ToRole="Publisher" />
   <NavigationProperty Name="Authors" Relationship="BooksModel.WrittenBy"
                       FromRole="Book" ToRole="Author" />
 </EntityType>

 

次の例は、5つのProperty要素を持つComplexType要素を示しています。The following example shows a ComplexType element with five Property elements:

 <ComplexType Name="Address" >
   <Property Type="String" Name="StreetAddress" Nullable="false" />
   <Property Type="String" Name="City" Nullable="false" />
   <Property Type="String" Name="StateOrProvince" Nullable="false" />
   <Property Type="String" Name="Country" Nullable="false" />
   <Property Type="String" Name="PostalCode" Nullable="false" />
 </ComplexType>

 

RowType 要素のアプリケーションRowType Element Application

RowType要素の子として使用されるプロパティ要素は、モデル定義関数に渡される、またはモデル定義関数から返されるデータの構造と特性を定義します。Property elements (as the children of a RowType element) define the shape and characteristics of data that can be passed to or returned from a model-defined function.  

Property要素には、次の子要素のうち1つだけを含めることができます。The Property element can have exactly one of the following child elements:

  • CollectionTypeCollectionType
  • ReferenceTypeReferenceType
  • RowTypeRowType

Property要素は、任意の数の子注釈要素を持つことができます。The Property element can have any number child annotation elements.

注意

Annotation 要素は、CSDL v2 以降でのみ使用できます。Annotation elements are only allowed in CSDL v2 and later.

 

該当する属性Applicable Attributes

次の表では、 Property 要素に適用できる属性について説明します。The following table describes the attributes that can be applied to the Property element.

属性名Attribute Name 必須Is Required Value
名前Name はいYes プロパティの名前。The name of the property.
TypeType はいYes プロパティ値の型です。The type of the property value.
NULL 値の使用Nullable いいえNo プロパティに null 値を指定できるかどうかに応じて、True (既定値) または FalseTrue (the default value) or False depending on whether the property can have a null value.
[!NOTE]
CSDL v1 で > 複合型プロパティにはが必要 Nullable="False" です。> In CSDL v1 a complex type property must have Nullable="False".
既定DefaultValue いいえNo プロパティの既定値です。The default value of the property.
MaxLengthMaxLength いいえNo プロパティ値の最大長。The maximum length of the property value.
FixedLengthFixedLength いいえNo プロパティ値が固定長文字列として格納されるかどうかによって、 TrueまたはFalseになります。True or False depending on whether the property value will be stored as a fixed length string.
[精度]Precision いいえNo プロパティ値の有効桁数。The precision of the property value.
スケールScale いいえNo プロパティ値の小数点以下桁数。The scale of the property value.
SRIDSRID いいえNo 空間システム参照識別子。Spatial System Reference Identifier. 空間型のプロパティに対してのみ有効です。Valid only for properties of spatial types. 詳細については、「 SRID and SRID (SQL Server)」を参照してください。For more information, see SRID and SRID (SQL Server).
UnicodeUnicode いいえNo プロパティ値が Unicode 文字列として格納されるかどうかによって、 TrueまたはFalseになります。True or False depending on whether the property value will be stored as a Unicode string.
CollationCollation いいえNo データ ソースで使用される照合順序を指定する文字列。A string that specifies the collating sequence to be used in the data source.

 

注意

プロパティ要素には、任意の数の annotation 属性 (カスタム XML 属性) を適用できます。Any number of annotation attributes (custom XML attributes) may be applied to the Property element. ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属していない場合があります。However, custom attributes may not belong to any XML namespace that is reserved for CSDL. カスタム属性の完全修飾名は一意である必要があります。The fully-qualified names for any two custom attributes cannot be the same.

 

Example

次の例は、モデル定義関数の戻り値の型の形状を定義するために使用される プロパティ 要素を示しています。The following example shows Property elements used to define the shape of the return type of a model-defined function.

 <Function Name="LastNamesAfter">
   <Parameter Name="someString" Type="Edm.String" />
   <ReturnType>
    <CollectionType>
      <RowType>
        <Property Name="FirstName" Type="Edm.String" Nullable="false" />
        <Property Name="LastName" Type="Edm.String" Nullable="false" />
      </RowType>
    </CollectionType>
   </ReturnType>
   <DefiningExpression>
             SELECT VALUE ROW(p.FirstName, p.LastName)
             FROM SchoolEntities.People AS p
             WHERE p.LastName &gt;= somestring
   </DefiningExpression>
 </Function>

 

 

PropertyRef 要素 (CSDL)PropertyRef Element (CSDL)

概念スキーマ定義言語 (CSDL) の Propertyref 要素は、プロパティが次のいずれかのロールを実行することを示すために、エンティティ型のプロパティを参照します。The PropertyRef element in conceptual schema definition language (CSDL) references a property of an entity type to indicate that the property will perform one of the following roles:

  • エンティティのキー (ID を指定するエンティティ型のプロパティまたは一連のプロパティ) の一部。Part of the entity's key (a property or a set of properties of an entity type that determine identity). 1つ以上の Propertyref 要素を使用して、エンティティキーを定義できます。One or more PropertyRef elements can be used to define an entity key.
  • 参照制約の依存 End または プリンシパル End。The dependent or principal end of a referential constraint.

Propertyref要素には、子要素として annotation 要素 (0 個以上) のみを含めることができます。The PropertyRef element can only have annotation elements (zero or more) as child elements.

注意

Annotation 要素は、CSDL v2 以降でのみ使用できます。Annotation elements are only allowed in CSDL v2 and later.

 

該当する属性Applicable Attributes

次の表では、 Propertyref 要素に適用できる属性について説明します。The table below describes the attributes that can be applied to the PropertyRef element.

属性名Attribute Name 必須Is Required Value
名前Name はいYes 参照されているプロパティの名前。The name of the referenced property.

 

注意

Propertyref要素には、任意の数の annotation 属性 (カスタム XML 属性) を適用できます。Any number of annotation attributes (custom XML attributes) may be applied to the PropertyRef element. ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属していない場合があります。However, custom attributes may not belong to any XML namespace that is reserved for CSDL. カスタム属性の完全修飾名は一意である必要があります。The fully-qualified names for any two custom attributes cannot be the same.

 

Example

次の例では、エンティティ型 (Book) を定義しています。The example below defines an entity type (Book). エンティティキーは、エンティティ型の ISBN プロパティを参照することによって定義されます。The entity key is defined by referencing the ISBN property of the entity type.

 <EntityType Name="Book">
   <Key>
     <PropertyRef Name="ISBN" />
   </Key>
   <Property Type="String" Name="ISBN" Nullable="false" />
   <Property Type="String" Name="Title" Nullable="false" />
   <Property Type="Decimal" Name="Revision" Nullable="false" Precision="29" Scale="29" />
   <NavigationProperty Name="Publisher" Relationship="BooksModel.PublishedBy"
                       FromRole="Book" ToRole="Publisher" />
   <NavigationProperty Name="Authors" Relationship="BooksModel.WrittenBy"
                       FromRole="Book" ToRole="Author" />
 </EntityType>

 

次の例では、2つの Propertyref 要素を使用して、2つのプロパティ (IdPublisherId) が参照に関する制約のプリンシパルと依存 end であることを示しています。In the next example, two PropertyRef elements are used to indicate that two properties (Id and PublisherId) are the principal and dependent ends of a referential constraint.

 <Association Name="PublishedBy">
   <End Type="BooksModel.Book" Role="Book" Multiplicity="*" >
   </End>
   <End Type="BooksModel.Publisher" Role="Publisher" Multiplicity="1" />
   <ReferentialConstraint>
     <Principal Role="Publisher">
       <PropertyRef Name="Id" />
     </Principal>
     <Dependent Role="Book">
       <PropertyRef Name="PublisherId" />
     </Dependent>
   </ReferentialConstraint>
 </Association>

 

 

ReferenceType 要素 (CSDL)ReferenceType Element (CSDL)

概念スキーマ定義言語 (CSDL) の ReferenceType 要素は、エンティティ型への参照を指定します。The ReferenceType element in conceptual schema definition language (CSDL) specifies a reference to an entity type. ReferenceType要素は、次の要素の子にすることができます。The ReferenceType element can be a child of the following elements:

  • ReturnType (関数)ReturnType (Function)
  • パラメーターParameter
  • CollectionTypeCollectionType

ReferenceType要素は、関数のパラメーターまたは戻り値の型を定義するときに使用されます。The ReferenceType element is used when defining a parameter or return type for a function.

ReferenceType要素には、次の子要素を含めることができます (一覧の順序)。A ReferenceType element can have the following child elements (in the order listed):

  • Documentation (0 個または 1 個の要素)Documentation (zero or one element)
  • Annotation 要素 (0 個以上の要素)Annotation elements (zero or more elements)

該当する属性Applicable Attributes

次の表は、 ReferenceType 要素に適用できる属性を示しています。The table below describes the attributes that can be applied to the ReferenceType element.

属性名Attribute Name 必須Is Required Value
TypeType はいYes 参照先エンティティ型の名前。The name of the entity type being referenced.

 

注意

ReferenceType要素には、任意の数の annotation 属性 (カスタム XML 属性) を適用できます。Any number of annotation attributes (custom XML attributes) may be applied to the ReferenceType element. ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属していない場合があります。However, custom attributes may not belong to any XML namespace that is reserved for CSDL. カスタム属性の完全修飾名は一意である必要があります。The fully-qualified names for any two custom attributes cannot be the same.

 

Example

次の例は、 Personエンティティ型への参照を受け入れるモデル定義関数で、 Parameter要素の子として使用されるReferenceType要素を示しています。The following example shows the ReferenceType element used as a child of a Parameter element in a model-defined function that accepts a reference to a Person entity type:

 <Function Name="GetYearsEmployed" ReturnType="Edm.Int32">
   <Parameter Name="instructor">
     <ReferenceType Type="SchoolModel.Person" />
   </Parameter>
   <DefiningExpression>
   Year(CurrentDateTime()) - Year(cast(instructor.HireDate as DateTime))
   </DefiningExpression>
 </Function>

 

次の例は、 Personエンティティ型への参照を返すモデル定義関数で、 ReturnType (Function) 要素の子として使用されるReferenceType要素を示しています。The following example shows the ReferenceType element used as a child of a ReturnType (Function) element in a model-defined function that returns a reference to a Person entity type:

 <Function Name="GetPersonReference">
     <Parameter Name="p" Type="SchoolModel.Person" />
     <ReturnType>
         <ReferenceType Type="SchoolModel.Person" />
     </ReturnType>
     <DefiningExpression>
           REF(p)
     </DefiningExpression>
 </Function>

 

 

ReferentialConstraint 要素 (CSDL)ReferentialConstraint Element (CSDL)

概念スキーマ定義言語 (CSDL) の参照整合性制約要素は、リレーショナルデータベースの参照整合性制約に似た機能を 定義しますA ReferentialConstraint element in conceptual schema definition language (CSDL) defines functionality that is similar to a referential integrity constraint in a relational database. データベース テーブルの列が別のテーブルの主キーを参照できるのと同じように、エンティティ型のプロパティが別のエンティティ型のエンティティ キーを参照できます。In the same way that a column (or columns) from a database table can reference the primary key of another table, a property (or properties) of an entity type can reference the entity key of another entity type. 参照されるエンティティ型は、制約の "プリンシパル End" と呼ばれます。The entity type that is referenced is called the principal end of the constraint. プリンシパル End を参照するエンティティ型は、制約の "依存 End" と呼ばれます。The entity type that references the principal end is called the dependent end of the constraint.

あるエンティティ型で公開されている外部キーが別のエンティティ型のプロパティを参照している場合、参照要素は2つのエンティティ型の間の関連付けを 定義しますIf a foreign key that is exposed on one entity type references a property on another entity type, the ReferentialConstraint element defines an association between the two entity types. 参照要素 は2つのエンティティ 型の関連付けに関する情報を提供するため、対応する AssociationSetMapping 要素はマッピングスキーマ言語 (MSL) には必要ありません。Because the ReferentialConstraint element provides information about how two entity types are related, no corresponding AssociationSetMapping element is necessary in the mapping specification language (MSL). 外部キーが公開されていない2つのエンティティ型間のアソシエーションには、関連情報をデータソースにマップするために、対応する AssociationSetMapping 要素が必要です。An association between two entity types that do not have foreign keys exposed must have a corresponding AssociationSetMapping element in order to map association information to the data source.

エンティティ型で外部キーが公開されていない場合 は、エンティティ 型と別のエンティティ型との間の主キーと主キーの制約のみを指定できます。If a foreign key is not exposed on an entity type, the ReferentialConstraint element can only define a primary key-to-primary key constraint between the entity type and another entity type.

要素には、次の子 要素を含める ことができます (順に表示されます)。A ReferentialConstraint element can have the following child elements (in the order listed):

  • Documentation (0 個または 1 個の要素)Documentation (zero or one element)
  • Principal (1 個の要素)Principal (exactly one element)
  • Dependent (1 個の要素)Dependent (exactly one element)
  • Annotation 要素 (0 個以上の要素)Annotation elements (zero or more elements)

該当する属性Applicable Attributes

この 要素には、 任意の数の annotation 属性 (カスタム XML 属性) を指定できます。The ReferentialConstraint element can have any number of annotation attributes (custom XML attributes). ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属していない場合があります。However, custom attributes may not belong to any XML namespace that is reserved for CSDL. カスタム属性の完全修飾名は一意である必要があります。The fully-qualified names for any two custom attributes cannot be the same.

Example

次の例では、 publishedby関連付けの定義の一部として使用されている 、オブジェクトの場所を示します。The following example shows a ReferentialConstraint element being used as part of the definition of the PublishedBy association.

 <Association Name="PublishedBy">
   <End Type="BooksModel.Book" Role="Book" Multiplicity="*" >
   </End>
   <End Type="BooksModel.Publisher" Role="Publisher" Multiplicity="1" />
   <ReferentialConstraint>
     <Principal Role="Publisher">
       <PropertyRef Name="Id" />
     </Principal>
     <Dependent Role="Book">
       <PropertyRef Name="PublisherId" />
     </Dependent>
   </ReferentialConstraint>
 </Association>

 

 

ReturnType (Function) 要素 (CSDL)ReturnType (Function) Element (CSDL)

概念スキーマ定義言語 (CSDL) の ReturnType (function) 要素は、function 要素で定義されている関数の戻り値の型を指定します。The ReturnType (Function) element in conceptual schema definition language (CSDL) specifies the return type for a function that is defined in a Function element. 関数の戻り値の型は、 ReturnType 属性と共に指定することもできます。A function return type can also be specified with a ReturnType attribute.

戻り値の型には、 Edmsimpletype、エンティティ型、複合型、行型、参照型、またはこれらの型のいずれかのコレクションを指定できます。Return types can be any EdmSimpleType, entity type, complex type, row type, ref type, or a collection of one of these types.

関数の戻り値の型は、 ReturnType (function) 要素のtype属性か、次のいずれかの子要素を使用して指定できます。The return type of a function can be specified with either the Type attribute of the ReturnType (Function) element, or with one of the following child elements:

  • CollectionTypeCollectionType
  • ReferenceTypeReferenceType
  • RowTypeRowType

注意

ReturnType (function) 要素のtype属性と子要素の両方を持つ関数の戻り値の型を指定した場合、モデルは検証されません。A model will not validate if you specify a function return type with both the Type attribute of the ReturnType (Function) element and one of the child elements.

 

該当する属性Applicable Attributes

次の表では、 ReturnType (Function) 要素に適用できる属性について説明します。The following table describes the attributes that can be applied to the ReturnType (Function) element.

属性名Attribute Name 必須Is Required Value
ReturnTypeReturnType いいえNo 関数の戻り値の型。The type returned by the function.

 

注意

任意の数の annotation 属性 (カスタム XML 属性) を ReturnType (Function) 要素に適用できます。Any number of annotation attributes (custom XML attributes) may be applied to the ReturnType (Function) element. ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属していない場合があります。However, custom attributes may not belong to any XML namespace that is reserved for CSDL. カスタム属性の完全修飾名は一意である必要があります。The fully-qualified names for any two custom attributes cannot be the same.

 

Example

次の例では、 関数 要素を使用して、書籍が印刷された年数を返す関数を定義します。The following example uses a Function element to define a function that returns the number of years a book has been in print. 戻り値の型は、 ReturnType (Function) 要素のtype属性によって指定されていることに注意してください。Note that the return type is specified by the Type attribute of a ReturnType (Function) element.

 <Function Name="GetYearsInPrint">
   <ReturnType Type=="Edm.Int32">
   <Parameter Name="book" Type="BooksModel.Book" />
   <DefiningExpression>
    Year(CurrentDateTime()) - Year(cast(book.PublishedDate as DateTime))
   </DefiningExpression>
 </Function>

 

 

ReturnType (FunctionImport) 要素 (CSDL)ReturnType (FunctionImport) Element (CSDL)

概念スキーマ定義言語 (CSDL) の ReturnType (FunctionImport) 要素は、FunctionImport 要素で定義されている関数の戻り値の型を指定します。The ReturnType (FunctionImport) element in conceptual schema definition language (CSDL) specifies the return type for a function that is defined in a FunctionImport element. 関数の戻り値の型は、 ReturnType 属性と共に指定することもできます。A function return type can also be specified with a ReturnType attribute.

戻り値の型は、エンティティ型、複合型、または Edmsimpletypeの任意のコレクションにすることができます。Return types can be any collection of entity type, complex type,or EdmSimpleType,

関数の戻り値の型は、 ReturnType (FunctionImport) 要素のtype属性と共に指定されます。The return type of a function is specified with the Type attribute of the ReturnType (FunctionImport) element.

該当する属性Applicable Attributes

次の表では、 ReturnType (FunctionImport) 要素に適用できる属性について説明します。The following table describes the attributes that can be applied to the ReturnType (FunctionImport) element.

属性名Attribute Name 必須Is Required Value
TypeType いいえNo 関数が返す型。The type that the function returns. 値は、ComplexType、EntityType、または EDMSimpleType のコレクションである必要があります。The value must be a collection of ComplexType, EntityType, or EDMSimpleType.
EntitySetEntitySet いいえNo 関数がエンティティ型のコレクションを返す場合、 EntitySet の値は、コレクションが属するエンティティセットである必要があります。If the function returns a collection of entity types, the value of the EntitySet must be the entity set to which the collection belongs. そうでない場合は、 EntitySet 属性を使用しないでください。Otherwise, the EntitySet attribute must not be used.

 

注意

任意の数の annotation 属性 (カスタム XML 属性) を ReturnType (FunctionImport) 要素に適用できます。Any number of annotation attributes (custom XML attributes) may be applied to the ReturnType (FunctionImport) element. ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属していない場合があります。However, custom attributes may not belong to any XML namespace that is reserved for CSDL. カスタム属性の完全修飾名は一意である必要があります。The fully-qualified names for any two custom attributes cannot be the same.

 

Example

次の例では、書籍と出版社を返す FunctionImport を使用します。The following example uses a FunctionImport that returns books and publishers. 関数は2つの結果セットを返すため、2つの ReturnType (FunctionImport) 要素が指定されていることに注意してください。Note that the function returns two result sets and therefore two ReturnType (FunctionImport) elements are specified.

 <FunctionImport Name="GetBooksAndPublishers">
   <ReturnType Type=="Collection(BooksModel.Book )" EntitySet=”Books”>
   <ReturnType Type=="Collection(BooksModel.Publisher)" EntitySet=”Publishers”>
 </FunctionImport>

 

 

RowType 要素 (CSDL)RowType Element (CSDL)

概念スキーマ定義言語 (CSDL) の RowType 要素は、概念モデルで定義されている関数のパラメーターまたは戻り値の型として名前のない構造体を定義します。A RowType element in conceptual schema definition language (CSDL) defines an unnamed structure as a parameter or return type for a function defined in the conceptual model.

RowType要素は、次の要素の子にすることができます。A RowType element can be the child of the following elements:

  • CollectionTypeCollectionType
  • パラメーターParameter
  • ReturnType (関数)ReturnType (Function)

RowType要素には、次の子要素を含めることができます (一覧の順序)。A RowType element can have the following child elements (in the order listed):

  • Property (1 個以上)Property (one or more)
  • Annotation 要素 (0 個以上)Annotation elements (zero or more)

該当する属性Applicable Attributes

RowType要素には、任意の数の annotation 属性 (カスタム XML 属性) を適用できます。Any number of annotation attributes (custom XML attributes) may be applied to the RowType element. ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属していない場合があります。However, custom attributes may not belong to any XML namespace that is reserved for CSDL. カスタム属性の完全修飾名は一意である必要があります。The fully-qualified names for any two custom attributes cannot be the same.

Example

次の例は、 CollectionType 要素を使用して、 RowType 要素で指定された行のコレクションを返すことを指定するモデル定義関数を示しています。The following example shows a model-defined function that uses a CollectionType element to specify that the function returns a collection of rows (as specified in the RowType element).

 <Function Name="LastNamesAfter">
   <Parameter Name="someString" Type="Edm.String" />
   <ReturnType>
    <CollectionType>
      <RowType>
        <Property Name="FirstName" Type="Edm.String" Nullable="false" />
        <Property Name="LastName" Type="Edm.String" Nullable="false" />
      </RowType>
    </CollectionType>
   </ReturnType>
   <DefiningExpression>
             SELECT VALUE ROW(p.FirstName, p.LastName)
             FROM SchoolEntities.People AS p
             WHERE p.LastName &gt;= somestring
   </DefiningExpression>
 </Function>

Schema 要素 (CSDL)Schema Element (CSDL)

スキーマ要素は、概念モデル定義のルート要素です。The Schema element is the root element of a conceptual model definition. 概念モデルを構成するオブジェクト、関数、およびコンテナーの定義を格納します。It contains definitions for the objects, functions, and containers that make up a conceptual model.

Schema要素には、次の子要素を0個以上含めることができます。The Schema element may contain zero or more of the following child elements:

  • 使用Using
  • EntityContainer 要素EntityContainer
  • EntityTypeEntityType
  • EnumTypeEnumType
  • 関連付けAssociation
  • ComplexTypeComplexType
  • 機能Function

スキーマ要素には、0個または1個の Annotation 要素を含めることができます。A Schema element may contain zero or one Annotation elements.

注意

Function要素と annotation 要素は、CSDL v2 以降でのみ使用できます。The Function element and annotation elements are only allowed in CSDL v2 and later.

 

Schema要素は、名前空間属性を使用して、概念モデルのエンティティ型、複合型、およびアソシエーションオブジェクトの名前空間を定義します。The Schema element uses the Namespace attribute to define the namespace for the entity type, complex type, and association objects in a conceptual model. 1 つの名前空間内で 2 つのオブジェクトが同じ名前を持つことはできません。Within a namespace, no two objects can have the same name. 名前空間は、複数の スキーマ 要素と複数の .csdl ファイルにまたがることができます。Namespaces can span multiple Schema elements and multiple .csdl files.

概念モデルの名前空間は、 スキーマ 要素の XML 名前空間とは異なります。A conceptual model namespace is different from the XML namespace of the Schema element. 概念モデルの名前空間 ( 名前空間 属性で定義) は、エンティティ型、複合型、およびアソシエーション型の論理コンテナーです。A conceptual model namespace (as defined by the Namespace attribute) is a logical container for entity types, complex types, and association types. Schema要素の XML 名前空間 ( xmlns属性で示されます) は、 schema要素の子要素と属性の既定の名前空間です。The XML namespace (indicated by the xmlns attribute) of a Schema element is the default namespace for child elements and attributes of the Schema element. フォームの XML 名前空間 https://schemas.microsoft.com/ado/YYYY/MM/edm (YYYY と MM はそれぞれ年と月を表します) は、CSDL 用に予約されています。XML namespaces of the form https://schemas.microsoft.com/ado/YYYY/MM/edm (where YYYY and MM represent a year and month respectively) are reserved for CSDL. カスタム要素と属性は、このフォームがある名前空間に存在することはできません。Custom elements and attributes cannot be in namespaces that have this form.

該当する属性Applicable Attributes

次の表では、 スキーマ 要素に適用できる属性について説明します。The table below describes the attributes can be applied to the Schema element.

属性名Attribute Name 必須Is Required Value
NamespaceNamespace はいYes 概念モデルの名前空間。The namespace of the conceptual model. 名前空間属性の値は、型の完全修飾名を形成するために使用されます。The value of the Namespace attribute is used to form the fully qualified name of a type. たとえば、 Customerという名前のentitytypeが Simple. example. Model 名前空間にある場合、 entitytypeの完全修飾名は simpleexamplemodel.customer です。For example, if an EntityType named Customer is in the Simple.Example.Model namespace, then the fully qualified name of the EntityType is SimpleExampleModel.Customer.
次の文字列は、 Namespace 属性の値として使用できません: SystemTransient、または EdmThe following strings cannot be used as the value for the Namespace attribute: System, Transient, or Edm. Namespace属性の値を、SSDL Schema 要素のnamespace属性の値と同じにすることはできません。The value for the Namespace attribute cannot be the same as the value for the Namespace attribute in the SSDL Schema element.
AliasAlias いいえNo 名前空間の名前の代わりに使用される識別子。An identifier used in place of the namespace name. たとえば、 Customerという名前のentitytypeが Simple. example. model 名前空間にあり、 Alias属性の値がmodelの場合、 entitytypeの完全修飾名として model. Customer を使用できます。For example, if an EntityType named Customer is in the Simple.Example.Model namespace and the value of the Alias attribute is Model, then you can use Model.Customer as the fully qualified name of the EntityType.

 

注意

スキーマ要素には、任意の数の annotation 属性 (カスタム XML 属性) を適用できます。Any number of annotation attributes (custom XML attributes) may be applied to the Schema element. ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属していない場合があります。However, custom attributes may not belong to any XML namespace that is reserved for CSDL. カスタム属性の完全修飾名は一意である必要があります。The fully-qualified names for any two custom attributes cannot be the same.

 

Example

EntityContainer要素、2つのEntityType要素、および1つのAssociation要素を含むスキーマ要素の例を次に示します。The following example shows a Schema element that contains an EntityContainer element, two EntityType elements, and one Association element.

 <Schema xmlns="https://schemas.microsoft.com/ado/2009/11/edm"
      xmlns:cg="https://schemas.microsoft.com/ado/2009/11/codegeneration"
      xmlns:store="https://schemas.microsoft.com/ado/2009/11/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>

 

 

TypeRef 要素 (CSDL)TypeRef Element (CSDL)

概念スキーマ定義言語 (CSDL) の TypeRef 要素は、既存の名前付きの型への参照を提供します。The TypeRef element in conceptual schema definition language (CSDL) provides a reference to an existing named type. TypeRef要素は CollectionType 要素の子にすることができます。これは、関数がパラメーターまたは戻り値の型としてコレクションを持つことを指定するために使用されます。The TypeRef element can be a child of the CollectionType element, which is used to specify that a function has a collection as a parameter or return type.

TypeRef要素には、次の子要素を含めることができます (一覧の順序)。A TypeRef element can have the following child elements (in the order listed):

  • Documentation (0 個または 1 個の要素)Documentation (zero or one element)
  • Annotation 要素 (0 個以上の要素)Annotation elements (zero or more elements)

該当する属性Applicable Attributes

次の表では、 TypeRef 要素に適用できる属性について説明します。The following table describes the attributes that can be applied to the TypeRef element. DefaultValueMaxLengthFixedLengthPrecisionScaleUnicode、およびCollation属性は、 edmsimpletypesにのみ適用されることに注意してください。Note that the DefaultValue, MaxLength, FixedLength, Precision, Scale, Unicode, and Collation attributes are only applicable to EDMSimpleTypes.

属性名Attribute Name 必須Is Required Value
TypeType いいえNo 参照先の型の名前。The name of the type being referenced.
NULL 値の使用Nullable いいえNo プロパティに null 値を指定できるかどうかに応じて、True (既定値) または FalseTrue (the default value) or False depending on whether the property can have a null value.
[!NOTE]
CSDL v1 で > 複合型プロパティにはが必要 Nullable="False" です。> In CSDL v1 a complex type property must have Nullable="False".
既定DefaultValue いいえNo プロパティの既定値です。The default value of the property.
MaxLengthMaxLength いいえNo プロパティ値の最大長。The maximum length of the property value.
FixedLengthFixedLength いいえNo プロパティ値が固定長文字列として格納されるかどうかによって、 TrueまたはFalseになります。True or False depending on whether the property value will be stored as a fixed length string.
[精度]Precision いいえNo プロパティ値の有効桁数。The precision of the property value.
スケールScale いいえNo プロパティ値の小数点以下桁数。The scale of the property value.
SRIDSRID いいえNo 空間システム参照識別子。Spatial System Reference Identifier. 空間型のプロパティに対してのみ有効です。Valid only for properties of spatial types. 詳細については、「 SRID and SRID (SQL Server)」を参照してください。For more information, see SRID and SRID (SQL Server).
UnicodeUnicode いいえNo プロパティ値が Unicode 文字列として格納されるかどうかによって、 TrueまたはFalseになります。True or False depending on whether the property value will be stored as a Unicode string.
CollationCollation いいえNo データ ソースで使用される照合順序を指定する文字列。A string that specifies the collating sequence to be used in the data source.

 

注意

任意の数の annotation 属性 (カスタム XML 属性) を CollectionType 要素に適用できます。Any number of annotation attributes (custom XML attributes) may be applied to the CollectionType element. ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属していない場合があります。However, custom attributes may not belong to any XML namespace that is reserved for CSDL. カスタム属性の完全修飾名は一意である必要があります。The fully-qualified names for any two custom attributes cannot be the same.

 

Example

次の例は、 TypeRef 要素 ( CollectionType 要素の子) を使用して、関数が Department エンティティ型のコレクションを受け入れることを指定するモデル定義関数を示しています。The following example shows a model-defined function that uses the TypeRef element (as a child of a CollectionType element) to specify that the function accepts a collection of Department entity types.

 <Function Name="GetAvgBudget">
      <Parameter Name="Departments">
          <CollectionType>
             <TypeRef Type="SchoolModel.Department"/>
          </CollectionType>
           </Parameter>
       <ReturnType Type="Collection(Edm.Decimal)"/>
       <DefiningExpression>
             SELECT VALUE AVG(d.Budget) FROM Departments AS d
       </DefiningExpression>
 </Function>

 

 

Using 要素 (CSDL)Using Element (CSDL)

概念スキーマ定義言語 (CSDL) の Using 要素は、別の名前空間に存在する概念モデルの内容をインポートします。The Using element in conceptual schema definition language (CSDL) imports the contents of a conceptual model that exists in a different namespace. 名前空間属性の値を設定することにより、別の概念モデルで定義されているエンティティ型、複合型、およびアソシエーション型を参照できます。By setting the value of the Namespace attribute, you can refer to entity types, complex types, and association types that are defined in another conceptual model. 複数の Using 要素を Schema 要素の子にすることができます。More than one Using element can be a child of a Schema element.

注意

CSDL の using 要素は、プログラミング言語での using ステートメントとまったく同じようには機能しません。The Using element in CSDL does not function exactly like a using statement in a programming language. プログラミング言語で using ステートメントを使用して名前空間をインポートすると、元の名前空間のオブジェクトには影響しません。By importing a namespace with a using statement in a programming language, you do not affect objects in the original namespace. CSDL では、インポートされた名前空間に、元の名前空間にあるエンティティ型から派生したエンティティ型が含まれている場合があります。In CSDL, an imported namespace can contain an entity type that is derived from an entity type in the original namespace. これは、元の名前空間で宣言されたエンティティ セットに影響を及ぼすことがあります。This can affect entity sets declared in the original namespace.

 

Using要素には、次の子要素を含めることができます。The Using element can have the following child elements:

  • Documentation (0 または 1 つの要素を含めることができます)。Documentation (zero or one elements allowed)
  • Annotation 要素 (0 個以上の要素を含めることができます)。Annotation elements (zero or more elements allowed)

該当する属性Applicable Attributes

次の表では、 Using 要素に適用できる属性について説明します。The table below describes the attributes can be applied to the Using element.

属性名Attribute Name 必須Is Required Value
NamespaceNamespace はいYes インポートされる名前空間の名前。The name of the imported namespace.
AliasAlias はいYes 名前空間の名前の代わりに使用される識別子。An identifier used in place of the namespace name. この属性は必須ですが、オブジェクト名を修飾するために名前空間名の代わりに使用することは必須ではありません。Although this attribute is required, it is not required that it be used in place of the namespace name to qualify object names.

 

注意

任意の数の annotation 属性 (カスタム XML 属性) を Using 要素に適用できます。Any number of annotation attributes (custom XML attributes) may be applied to the Using element. ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属していない場合があります。However, custom attributes may not belong to any XML namespace that is reserved for CSDL. カスタム属性の完全修飾名は一意である必要があります。The fully-qualified names for any two custom attributes cannot be the same.

 

Example

次の例は、他の場所で定義されている名前空間をインポートするために使用される Using 要素を示しています。The following example demonstrates the Using element being used to import a namespace that is defined elsewhere. 表示される スキーマ 要素の名前空間はであることに注意 BooksModel してください。Note that the namespace for the Schema element shown is BooksModel. EntityType のプロパティは、 Address Publisher EntityType名前空間で定義されている複合型です ExtendedBooksModel ( Using要素を使用してインポートされます)。The Address property on the PublisherEntityType is a complex type that is defined in the ExtendedBooksModel namespace (imported with the Using element).

 <Schema xmlns="https://schemas.microsoft.com/ado/2009/11/edm"
           xmlns:cg="https://schemas.microsoft.com/ado/2009/11/codegeneration"
           xmlns:store="https://schemas.microsoft.com/ado/2009/11/edm/EntityStoreSchemaGenerator"
           Namespace="BooksModel" Alias="Self">

     <Using Namespace="BooksModel.Extended" Alias="BMExt" />

 <EntityContainer Name="BooksContainer" >
       <EntitySet Name="Publishers" EntityType="BooksModel.Publisher" />
     </EntityContainer>

 <EntityType Name="Publisher">
       <Key>
         <PropertyRef Name="Id" />
       </Key>
       <Property Type="Int32" Name="Id" Nullable="false" />
       <Property Type="String" Name="Name" Nullable="false" />
       <Property Type="BMExt.Address" Name="Address" Nullable="false" />
     </EntityType>

 </Schema>

 

 

annotation 属性 (CSDL)Annotation Attributes (CSDL)

概念スキーマ定義言語 (CSDL) の annotation 属性は、概念モデルのカスタム XML 属性です。Annotation attributes in conceptual schema definition language (CSDL) are custom XML attributes in the conceptual model. 有効な XML 構造であることに加え、annotation 属性は次の条件を満たしている必要があります。In addition to having valid XML structure, the following must be true of annotation attributes:

  • annotation 属性は、CSDL 用に予約された XML 名前空間に存在しない。Annotation attributes must not be in any XML namespace that is reserved for CSDL.
  • 複数の annotation 属性を特定の 1 つの CSDL 要素に適用することができる。More than one annotation attribute may be applied to a given CSDL element.
  • 2 つの任意の annotation 属性の完全修飾名が同じではない。The fully-qualified names of any two annotation attributes must not be the same.

annotation 属性は、概念モデルの要素に関する追加のメタデータを提供するために使用できます。Annotation attributes can be used to provide extra metadata about the elements in a conceptual model. Annotation 要素に含まれるメタデータには、実行時に、system.string 名前空間のクラスを使用してアクセスできます。Metadata contained in annotation elements can be accessed at runtime by using classes in the System.Data.Metadata.Edm namespace.

Example

Annotation 属性 (CustomAttribute) を持つEntityType要素の例を次に示します。The following example shows an EntityType element with an annotation attribute (CustomAttribute). また、エンティティ型の要素に適用される annotation 要素も示しています。The example also shows an annotation element applied to the entity type element.

 <Schema Namespace="SchoolModel" Alias="Self"
         xmlns:annotation="https://schemas.microsoft.com/ado/2009/02/edm/annotation"
         xmlns="https://schemas.microsoft.com/ado/2009/11/edm">
   <EntityContainer Name="SchoolEntities" annotation:LazyLoadingEnabled="true">
     <EntitySet Name="People" EntityType="SchoolModel.Person" />
   </EntityContainer>
   <EntityType Name="Person" xmlns:p="http://CustomNamespace.com"
               p:CustomAttribute="Data here.">
     <Key>
       <PropertyRef Name="PersonID" />
     </Key>
     <Property Name="PersonID" Type="Int32" Nullable="false"
               annotation:StoreGeneratedPattern="Identity" />
     <Property Name="LastName" Type="String" Nullable="false"
               MaxLength="50" Unicode="true" FixedLength="false" />
     <Property Name="FirstName" Type="String" Nullable="false"
               MaxLength="50" Unicode="true" FixedLength="false" />
     <Property Name="HireDate" Type="DateTime" />
     <Property Name="EnrollmentDate" Type="DateTime" />
     <p:CustomElement>
       Custom metadata.
     </p:CustomElement>
   </EntityType>
 </Schema>

 

次のコードは、annotation 属性でメタデータを取得し、コンソールに書き込みます。The following code retrieves the metadata in the annotation attribute and writes it to the console:

 EdmItemCollection collection = new EdmItemCollection("School.csdl");
 MetadataWorkspace workspace = new MetadataWorkspace();
 workspace.RegisterItemCollection(collection);
 EdmType contentType;
 workspace.TryGetType("Person", "SchoolModel", DataSpace.CSpace, out contentType);
 if (contentType.MetadataProperties.Contains("http://CustomNamespace.com:CustomAttribute"))
 {
     MetadataProperty annotationProperty =
         contentType.MetadataProperties["http://CustomNamespace.com:CustomAttribute"];
     object annotationValue = annotationProperty.Value;
     Console.WriteLine(annotationValue.ToString());
 }

 

前のコードでは、School.csdl ファイルがプロジェクトの出力ディレクトリにあり、プロジェクトに次の Imports および Using ステートメントが追加されていることを前提としています。The code above assumes that the School.csdl file is in the project's output directory and that you have added the following Imports and Using statements to your project:

 using System.Data.Metadata.Edm;

 

 

Annotation 要素 (CSDL)Annotation Elements (CSDL)

概念スキーマ定義言語 (CSDL) の annotation 要素は、概念モデルのカスタム XML 要素です。Annotation elements in conceptual schema definition language (CSDL) are custom XML elements in the conceptual model. 有効な XML 構造が必要であることに加え、annotation 要素は次の条件も満たしている必要があります。In addition to having valid XML structure, the following must be true of annotation elements:

  • annotation 要素は、CSDL 用に予約された XML 名前空間内に存在できません。Annotation elements must not be in any XML namespace that is reserved for CSDL.
  • 複数の annotation 要素を特定の CSDL 要素の子にすることができます。More than one annotation element may be a child of a given CSDL element.
  • 2 つの annotation 要素の完全修飾名を同じにすることはできません。The fully-qualified names of any two annotation elements must not be the same.
  • annotation 要素は、特定の CSDL 要素のその他すべての子要素より後に指定する必要があります。Annotation elements must appear after all other child elements of a given CSDL element.

annotation 要素は、概念モデルの要素に関する追加のメタデータを提供するために使用できます。Annotation elements can be used to provide extra metadata about the elements in a conceptual model. .NET Framework version 4 以降では、annotation 要素に含まれるメタデータに、実行時に、system.string 名前空間のクラスを使用してアクセスできます。Starting with the .NET Framework version 4, metadata contained in annotation elements can be accessed at runtime by using classes in the System.Data.Metadata.Edm namespace.

Example

Annotation 要素 (customelement) を持つEntityType要素の例を次に示します。The following example shows an EntityType element with an annotation element (CustomElement). また、エンティティ型の要素に適用される annotation 属性も示しています。The example also show an annotation attribute applied to the entity type element.

 <Schema Namespace="SchoolModel" Alias="Self"
         xmlns:annotation="https://schemas.microsoft.com/ado/2009/02/edm/annotation"
         xmlns="https://schemas.microsoft.com/ado/2009/11/edm">
   <EntityContainer Name="SchoolEntities" annotation:LazyLoadingEnabled="true">
     <EntitySet Name="People" EntityType="SchoolModel.Person" />
   </EntityContainer>
   <EntityType Name="Person" xmlns:p="http://CustomNamespace.com"
               p:CustomAttribute="Data here.">
     <Key>
       <PropertyRef Name="PersonID" />
     </Key>
     <Property Name="PersonID" Type="Int32" Nullable="false"
               annotation:StoreGeneratedPattern="Identity" />
     <Property Name="LastName" Type="String" Nullable="false"
               MaxLength="50" Unicode="true" FixedLength="false" />
     <Property Name="FirstName" Type="String" Nullable="false"
               MaxLength="50" Unicode="true" FixedLength="false" />
     <Property Name="HireDate" Type="DateTime" />
     <Property Name="EnrollmentDate" Type="DateTime" />
     <p:CustomElement>
       Custom metadata.
     </p:CustomElement>
   </EntityType>
 </Schema>

 

次のコードは、annotation 要素内のメタデータを取得してコンソールに出力します。The following code retrieves the metadata in the annotation element and writes it to the console:

 EdmItemCollection collection = new EdmItemCollection("School.csdl");
 MetadataWorkspace workspace = new MetadataWorkspace();
 workspace.RegisterItemCollection(collection);
 EdmType contentType;
 workspace.TryGetType("Person", "SchoolModel", DataSpace.CSpace, out contentType);
 if (contentType.MetadataProperties.Contains("http://CustomNamespace.com:CustomElement"))
 {
     MetadataProperty annotationProperty =
         contentType.MetadataProperties["http://CustomNamespace.com:CustomElement"];
     object annotationValue = annotationProperty.Value;
     Console.WriteLine(annotationValue.ToString());
 }

 

前のコードでは、School.csdl ファイルがプロジェクトの出力ディレクトリにあり、プロジェクトに次の Imports および Using ステートメントが追加されていることを前提としています。The code above assumes that the School.csdl file is in the project's output directory and that you have added the following Imports and Using statements to your project:

 using System.Data.Metadata.Edm;

 

 

概念モデルの型 (CSDL)Conceptual Model Types (CSDL)

概念スキーマ定義言語 (CSDL) では、概念モデルのプロパティを定義する Edmsimpletypesと呼ばれる一連の抽象プリミティブデータ型をサポートしています。Conceptual schema definition language (CSDL) supports a set of abstract primitive data types, called EDMSimpleTypes, that define properties in a conceptual model. Edmsimpletypes は、ストレージ環境またはホスト環境でサポートされているプリミティブデータ型のプロキシです。EDMSimpleTypes are proxies for primitive data types that are supported in the storage or hosting environment.

下の表は、CSDL でサポートされるプリミティブ データ型の一覧を示します。The table below lists the primitive data types that are supported by CSDL. この表には、各 Edmsimpletypeに適用できるファセットの一覧も含まれています。The table also lists the facets that can be applied to each EDMSimpleType.

EDMSimpleTypeEDMSimpleType 説明Description 使用できるファセットApplicable Facets
Edm.BinaryEdm.Binary バイナリ データを格納します。Contains binary data. MaxLength、FixedLength、Nullable、DefaultMaxLength, FixedLength, Nullable, Default
Edm.BooleanEdm.Boolean Trueまたはfalseの値が含まれています。Contains the value true or false. Nullable、DefaultNullable, Default
Edm.ByteEdm.Byte 符号なし 8 ビット整数値を格納します。Contains an unsigned 8-bit integer value. Precision、Nullable、DefaultPrecision, Nullable, Default
Edm.DateTimeEdm.DateTime 日時を表します。Represents a date and time. Precision、Nullable、DefaultPrecision, Nullable, Default
Edm.DateTimeOffsetEdm.DateTimeOffset GMT からのオフセット (分単位) としての日時を格納します。Contains a date and time as an offset in minutes from GMT. Precision、Nullable、DefaultPrecision, Nullable, Default
Edm.DecimalEdm.Decimal 有効桁数と小数点以下桁数が固定長の数値を格納します。Contains a numeric value with fixed precision and scale. Precision、Nullable、DefaultPrecision, Nullable, Default
Edm.DoubleEdm.Double 15桁の有効桁数を持つ浮動小数点数を格納しますContains a floating point number with 15-digit precision Precision、Nullable、DefaultPrecision, Nullable, Default
Edm. FloatEdm.Float 7 桁の有効桁数を持つ浮動小数点数を格納します。Contains a floating point number with 7-digit precision. Precision、Nullable、DefaultPrecision, Nullable, Default
Edm.GuidEdm.Guid 16 バイトの一意識別子を格納します。Contains a 16-byte unique identifier. Precision、Nullable、DefaultPrecision, Nullable, Default
Edm.Int16Edm.Int16 符号付き 16 ビット整数値を格納します。Contains a signed 16-bit integer value. Precision、Nullable、DefaultPrecision, Nullable, Default
Edm.Int32Edm.Int32 符号付き 32 ビット整数値を格納します。Contains a signed 32-bit integer value. Precision、Nullable、DefaultPrecision, Nullable, Default
Edm.Int64Edm.Int64 符号付き 64 ビット整数値を格納します。Contains a signed 64-bit integer value. Precision、Nullable、DefaultPrecision, Nullable, Default
Edm.SByteEdm.SByte 符号付き 8 ビット整数値を格納します。Contains a signed 8-bit integer value. Precision、Nullable、DefaultPrecision, Nullable, Default
Edm.StringEdm.String 文字データを格納します。Contains character data. Unicode、FixedLength、MaxLength、Collation、Precision、Nullable、DefaultUnicode, FixedLength, MaxLength, Collation, Precision, Nullable, Default
Edm.TimeEdm.Time 時刻を格納します。Contains a time of day. Precision、Nullable、DefaultPrecision, Nullable, Default
Edm. GeographyEdm.Geography Nullable、Default、SRIDNullable, Default, SRID
Edm.GeographyPointEdm.GeographyPoint Nullable、Default、SRIDNullable, Default, SRID
GeographyLineStringEdm.GeographyLineString Nullable、Default、SRIDNullable, Default, SRID
返される geographypolygonEdm.GeographyPolygon Nullable、Default、SRIDNullable, Default, SRID
Edm. GeographyMultiPointEdm.GeographyMultiPoint Nullable、Default、SRIDNullable, Default, SRID
返される geographymultilinestringEdm.GeographyMultiLineString Nullable、Default、SRIDNullable, Default, SRID
Edm. GeographyMultiPolygonEdm.GeographyMultiPolygon Nullable、Default、SRIDNullable, Default, SRID
Edm. GeographyCollectionEdm.GeographyCollection Nullable、Default、SRIDNullable, Default, SRID
Edm. GeometryEdm.Geometry Nullable、Default、SRIDNullable, Default, SRID
返される geometrypointEdm.GeometryPoint Nullable、Default、SRIDNullable, Default, SRID
返される geometrylinestringEdm.GeometryLineString Nullable、Default、SRIDNullable, Default, SRID
返される geometrypolygonEdm.GeometryPolygon Nullable、Default、SRIDNullable, Default, SRID
返される geometrymultipointEdm.GeometryMultiPoint Nullable、Default、SRIDNullable, Default, SRID
返される geometrymultilinestringEdm.GeometryMultiLineString Nullable、Default、SRIDNullable, Default, SRID
返される geometrymultipolygonEdm.GeometryMultiPolygon Nullable、Default、SRIDNullable, Default, SRID
GeometryCollectionEdm.GeometryCollection Nullable、Default、SRIDNullable, Default, SRID

ファセット (CSDL)Facets (CSDL)

概念スキーマ定義言語 (CSDL) のファセットは、エンティティ型と複合型のプロパティに対する制約を表します。Facets in conceptual schema definition language (CSDL) represent constraints on properties of entity types and complex types. ファセットは次の CSDL 要素で XML 属性として使用されます。Facets appear as XML attributes on the following CSDL elements:

  • プロパティProperty
  • TypeRefTypeRef
  • パラメーターParameter

次の表は、CSDL でサポートされるファセットについて説明しています。The following table describes the facets that are supported in CSDL. いずれのファセットもオプションです。All facets are optional. 次に示すいくつかのファセットは、概念モデルからデータベースを生成するときに Entity Framework によって使用されます。Some facets listed below are used by the Entity Framework when generating a database from a conceptual model.

注意

概念モデルのデータ型の詳細については、「概念モデルの型 (CSDL)」を参照してください。For information about data types in a conceptual model, see Conceptual Model Types (CSDL).

ファセットFacet 説明Description 対象Applies to データベースの生成に使用Used for the database generation ランタイムで使用Used by the runtime
CollationCollation プロパティの値に対して比較と順序付け操作を行うときに使用する照合シーケンス (または並べ替え順序) を指定します。Specifies the collating sequence (or sorting sequence) to be used when performing comparison and ordering operations on values of the property. Edm.StringEdm.String はいYes いいえNo
ConcurrencyModeConcurrencyMode プロパティの値をオプティミスティック コンカレンシー チェックに使用することを指定します。Indicates that the value of the property should be used for optimistic concurrency checks. すべての Edmsimpletype プロパティAll EDMSimpleType properties いいえNo はいYes
[Default]Default インスタンス化で値が指定されない場合のプロパティの既定値を指定します。Specifies the default value of the property if no value is supplied upon instantiation. すべての Edmsimpletype プロパティAll EDMSimpleType properties はいYes はいYes
FixedLengthFixedLength プロパティ値の長さを可変とすることができるかどうかを指定します。Specifies whether the length of the property value can vary. Edm. Binary, edm. StringEdm.Binary, Edm.String はいYes いいえNo
MaxLengthMaxLength プロパティ値の最大長を指定します。Specifies the maximum length of the property value. Edm. Binary, edm. StringEdm.Binary, Edm.String はいYes いいえNo
NULL 値の使用Nullable プロパティが null 値を持つことができるかどうかを指定します。Specifies whether the property can have a null value. すべての Edmsimpletype プロパティAll EDMSimpleType properties はいYes はいYes
[精度]Precision Decimal型のプロパティの場合、プロパティ値が持つことができる桁数を指定します。For properties of type Decimal, specifies the number of digits a property value can have. TimeDateTime、およびDateTimeOffset型のプロパティの場合、プロパティ値の秒の小数部の桁数を指定します。For properties of type Time, DateTime, and DateTimeOffset, specifies the number of digits for the fractional part of seconds of the property value. Edm. DateTime, edm. DateTimeOffset, edm. Decimal, edm. TimeEdm.DateTime, Edm.DateTimeOffset, Edm.Decimal, Edm.Time はいYes いいえNo
スケールScale プロパティ値の小数点の右側の桁数を指定します。Specifies the number of digits to the right of the decimal point for the property value. Edm.DecimalEdm.Decimal はいYes いいえNo
SRIDSRID 空間システム参照システム ID を指定します。Specifies the Spatial System Reference System ID. 詳細については、「 SRID and SRID (SQL Server)」を参照してください。For more information, see SRID and SRID (SQL Server). GeographyLineString、edm. GeographyPoint、返される geographypolygon、返される geographymultilinestring、Edm. GeographyMultiPolygon、Edm. Geographypoint、Edm. Geometry、返される geometrypoint、、返される geometrylinestring、、、返される geometrypolygon、返される geometrymultipoint、返される geometrymultilinestring、返される geometrymultipolygon、GeometryCollection、、、、、、、、Edm.Geography, Edm.GeographyPoint, Edm.GeographyLineString, Edm.GeographyPolygon, Edm.GeographyMultiPoint, Edm.GeographyMultiLineString, Edm.GeographyMultiPolygon, Edm.GeographyCollection, Edm.Geometry, Edm.GeometryPoint, Edm.GeometryLineString, Edm.GeometryPolygon, Edm.GeometryMultiPoint, Edm.GeometryMultiLineString, Edm.GeometryMultiPolygon, Edm.GeometryCollection いいえNo はいYes
UnicodeUnicode プロパティ値を Unicode として保存するかどうかを指定します。Indicates whether the property value is stored as Unicode. Edm.StringEdm.String はいYes はいYes

注意

概念モデルからデータベースを生成する場合、データベース生成ウィザードでは、プロパティ要素が次の名前空間にある場合は、その属性の値が認識され https://schemas.microsoft.com/ado/2009/02/edm/annotation ます。When generating a database from a conceptual model, the Generate Database Wizard will recognize the value of the StoreGeneratedPattern attribute on a Property element if it is in the following namespace: https://schemas.microsoft.com/ado/2009/02/edm/annotation. 属性でサポートされている値は、 id計算です。The supported values for the attribute are Identity and Computed. Id値を指定すると、データベースで生成された id 値を持つデータベース列が生成されます。A value of Identity will produce a database column with an identity value that is generated in the database. 計算値を指定すると、データベースで計算された値を持つ列が生成されます。A value of Computed will produce a column with a value that is computed in the database.

Example

エンティティ型のプロパティに適用されるファセットの例を次に示します。The following example shows facets applied to the properties of an entity type:

 <EntityType Name="Product">
   <Key>
     <PropertyRef Name="ProductId" />
   </Key>
   <Property Type="Int32"
             Name="ProductId" Nullable="false"
             a:StoreGeneratedPattern="Identity"
    xmlns:a="https://schemas.microsoft.com/ado/2009/02/edm/annotation" />
   <Property Type="String"
             Name="ProductName"
             Nullable="false"
             MaxLength="50" />
   <Property Type="String"
             Name="Location"
             Nullable="true"
             MaxLength="25" />
 </EntityType>