ファセットは、プリミティブ型のプロパティ定義に詳細を追加するために使用されます。 プロパティ定義には プロパティ 型に関する情報が含まれていますが、多くの場合、より詳細な情報が必要です。 たとえば、概念モデルのエンティティ型には、値を 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 |
プロパティ値の小数点の右側の桁数を指定します。 | 10 進法 |
Unicode |
プロパティ値が Unicode として格納されているかどうかを示します。 | String |
例
ADO.NET Entity Framework では、概念スキーマ定義言語 (CSDL) と呼ばれるドメイン固有言語 (DSL) を使用して概念モデルを定義します。 次の CSDL では、 Book
エンティティ型が定義されています。 ファセットは XML 属性として実装されることに注意してください。 ファセット値は、プロパティを null に設定できないこと、および Scale
プロパティのPrecision
とRevision
がそれぞれ 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>