property
"プロパティ" は、エンティティ型および複合型に不可欠な構成要素です。 プロパティは、エンティティ型または複合型のインスタンスに含まれるデータの形と特性を定義します。 概念モデルのプロパティは、クラスに定義されるプロパティに似ています。 クラスのプロパティがクラスの構造を定義し、オブジェクトに関する情報を伝達するのと同様に、概念モデルのプロパティはエンティティ型の構造を定義し、エンティティ型のインスタンスに関する情報を伝達します。
Note
このトピックで説明するプロパティは、ナビゲーション プロパティとは異なります。 詳しくは、「ナビゲーション プロパティ」をご覧ください。
プロパティの定義には、次の情報が含まれます。
プロパティ名。 (必須)
プロパティの型。 (必須)
一連のファセット。 (オプション)。
プロパティには、プリミティブ データ (文字列、整数、ブール値など) または構造化データ (複合型) を含めることができます。 プリミティブ型のプロパティは、スカラー プロパティとも呼ばれます。 詳しくは、「Entity Data Model: プリミティブ データ型」をご覧ください。
Note
複合型自体に、複合型のプロパティを指定することができます。
例
下のダイアグラムは、Book
、Publisher
、および Author
という 3 つのエンティティ型の概念モデルを示しています。 各エンティティ型には、いくつかのプロパティがありますが、ダイアグラムには各プロパティの型情報が示されていません。 エンティティ キーのプロパティには、"(キー)" と示されています。
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>
ダイアグラムに示されたいずれかのプロパティが複合型のプロパティであることも考えられます。 たとえば、Address
エンティティ型の Publisher
プロパティは、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>