ファセット (Entity Data Model)
ファセットは、プリミティブ型のプロパティ定義の詳細を追加するために使用します。 プロパティ定義には、プロパティの型の情報が含まれますが、多くの場合、より詳しい情報が必要になります。 たとえば、概念モデルのエンティティ型に、値を null に設定できない String 型のプロパティが含まれる場合があります。 ファセットにより、このレベルの詳細を指定することができます。
下の表は、EDM でサポートされるファセットについて説明しています。
注 : |
---|
ファセットの正確な値と動作は、EDM の実装を使用するランタイム環境によって決まります。 |
ファセット | 説明 | 対象 |
---|---|---|
Collation |
プロパティの値に対して比較と順序付け操作を行うときに使用する照合順序 (または並べ替え順序) を指定します。 |
String |
ConcurrencyMode |
プロパティの値をオプティミスティック同時実行制御チェックに使用することを指定します。 |
すべてのプリミティブ型のプロパティ |
Default |
インスタンス化で値が指定されない場合のプロパティの既定値を指定します。 |
すべてのプリミティブ型のプロパティ |
FixedLength |
プロパティ値の長さを可変とすることができるかどうかを指定します。 |
Binary、 String |
MaxLength |
プロパティ値の最大長を指定します。 |
Binary、 String |
Nullable |
プロパティに null 値を指定できるかどうかを指定します。 |
すべてのプリミティブ型のプロパティ |
Precision |
Decimal 型のプロパティには、プロパティ値に格納できる桁数を指定します。 Time 型、DateTime 型、および DateTimeOffset 型のプロパティについては、プロパティ値の秒の小数点以下の有効桁数を指定します。 |
DateTime、 DateTimeOffset、 Decimal、Time |
Scale |
プロパティ値の小数点の右側の桁数を指定します。 |
Decimal |
Unicode |
プロパティ値を Unicode として保存するかどうかを指定します。 |
String |
例
ADO.NET Entity Framework では、概念スキーマ定義言語 (CSDL) と呼ばれるドメイン固有言語 (DSL) を使用して概念モデルを定義します。 次の CSDL は Book エンティティ型を定義しています。 ファセットは XML 属性として実装されています。 ファセット値は、プロパティ値を null に設定できないことと、Revision プロパティの Scale と Precision がそれぞれ 29 に設定されることを示します。
<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>