ComplexType 要素 (CSDL)

ComplexType 要素は、EdmSimpleType プロパティまたは他の複合型で構成されるデータ構造を定義します。 EdmSimpleType の詳細については、「概念モデルの型」を参照してください。 複合型は、エンティティ型または別の複合型のプロパティにすることができます。 複合型は、データを定義するという点でエンティティ型に似ています。 ただし、複合型とエンティティ型の間にはいくつかの重要な違いがあります。

  • 複合型には ID (またはキー) がないため、独立して存在することができません。 複合型は、エンティティ型またはその他の複合型のプロパティとしてのみ存在できます。

  • 複合型は、アソシエーションに参加できません。 アソシエーションのいずれの End にも複合型を指定できないため、複合型にはナビゲーション プロパティを定義できません。

  • 複合型のスカラー プロパティはそれぞれ null に設定できますが、複合型のプロパティには null 値を指定できません。

A ComplexType element can have the following child elements (in the order listed):

The table below describes the attributes that can be applied to the ComplexType element.

属性名 必須 Value

Name

有効

複合型の名前。 複合型の名前は、モデルのスコープ内にある別の複合型、エンティティ型、またはアソシエーションの名前と同じにすることはできません。

BaseType

いいえ

定義される複合型の基本データ型である、別の複合型の名前。

Cc716799.note(ja-jp,VS.100).gif注 :
この属性は、名前空間 https://schemas.microsoft.com/ado/2006/04/edm で指定された CSDL バージョンでは適用されません。複合型の継承は、このバージョンではサポートされません。

Abstract

いいえ

複合型が抽象型かどうかにより、True または False (既定値)。

Cc716799.note(ja-jp,VS.100).gif注 :
この属性は、名前空間 https://schemas.microsoft.com/ado/2006/04/edm で指定された CSDL バージョンでは適用されません。このバージョンの複合型を抽象型にすることはできません。

Cc716799.note(ja-jp,VS.100).gif注 :
ComplexType 要素には、任意の数の annotation 属性 (カスタム XML 属性) を適用できます。However, custom attributes may not belong to any XML namespace that is reserved for CSDL.カスタム属性の完全修飾名は一意である必要があります。

次の例は、EdmSimpleType プロパティ StreetAddressCityStateOrProvinceCountry、および PostalCode を持つ複合型 Address を示しています。

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

エンティティ型のプロパティとして複合型 Address (上記) を定義するには、エンティティ型の定義でプロパティの型を宣言する必要があります。 次の例は、エンティティ型 (Publisher) の複合型である Address プロパティを示しています。

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

参照

概念

エンティティ フレームワークの概要
CSDL 仕様
Schema 要素 (CSDL)
EntityType 要素 (CSDL)
複合型オブジェクト (Entity Framework)

その他のリソース

CSDL、SSDL、および MSL 仕様
ADO.NET Entity Data Model Tools
complex type (Entity Data Model)