プロパティ は、 エンティティ型 と 複合型の基本的な構成要素です。 プロパティは、エンティティ型インスタンスまたは複合型インスタンスに含まれるデータの形状と特性を定義します。 概念モデルのプロパティは、クラスで定義されているプロパティに似ています。 クラスのプロパティがクラスの形状を定義し、オブジェクトに関する情報を伝達するのと同じ方法で、概念モデルのプロパティはエンティティ型の形状を定義し、エンティティ型インスタンスに関する情報を伝達します。
注
このトピックで説明するように、プロパティはナビゲーション プロパティとは異なります。 詳細については、 ナビゲーション プロパティを参照してください。
プロパティ定義には、次の情報が含まれています。
プロパティ名。 (必須)
プロパティの種類。 (必須)
ファセットのセット。 (省略可能)
プロパティには、プリミティブ データ (文字列、整数、ブール値など) または構造化データ (複合型など) を含めることができます。 プリミティブ型のプロパティは、スカラー プロパティとも呼ばれます。 詳細については、「 エンティティ データ モデル: プリミティブ データ型」を参照してください。
注
複合型自体は、複合型であるプロパティを持つことができます。
例
次の図は、 Book
、 Publisher
、 Author
の 3 種類のエンティティを持つ概念モデルを示しています。 各エンティティ型には複数のプロパティがありますが、各プロパティの型情報は図に示されていません。
エンティティ キーであるプロパティは 、(Key) で示されます。
ADO.NET Entity Framework では、概念スキーマ定義言語 (CSDL) と呼ばれるドメイン固有言語 (DSL) を使用して概念モデルを定義します。 次の CSDL は、(上の図に示すように) Book
エンティティ型を定義し、XML 属性を使用して各プロパティの型と名前を示します。 省略可能なファセット Nullable
は、XML 属性を使用して定義することもできます。
<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>
図に示されているプロパティの 1 つが複合型プロパティである可能性があります。 たとえば、Publisher
エンティティ型のAddress
プロパティは、StreetAddress
、City
、StateOrProvince
、Country
、PostalCode
など、いくつかのスカラー プロパティで構成される複合型プロパティです。 このような複合型の CSDL 表現は次のようになります。
<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>