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