facet
"ファセット" は、プリミティブ型のプロパティ定義の詳細を追加するために使用します。 プロパティ定義には、プロパティの型の情報が含まれますが、多くの場合、より詳しい情報が必要になります。 たとえば、概念モデルのエンティティ型に、値を null に設定できない String
型のプロパティが含まれる場合があります。 ファセットにより、このレベルの詳細を指定することができます。
下の表は、EDM でサポートされるファセットについて説明しています。
Note
ファセットの正確な値と動作は、EDM の実装を使用するランタイム環境によって決まります。
ファセット | 説明 | 対象 |
---|---|---|
Collation |
プロパティの値に対して比較と順序付け操作を行うときに使用する照合シーケンス (または並べ替え順序) を指定します。 | String |
ConcurrencyMode |
プロパティの値をオプティミスティック コンカレンシー チェックに使用することを指定します。 | すべてのプリミティブ型のプロパティ |
Default |
インスタンス化で値が指定されない場合のプロパティの既定値を指定します。 | すべてのプリミティブ型のプロパティ |
FixedLength |
プロパティ値の長さを可変とすることができるかどうかを指定します。 | Binary 、String |
MaxLength |
プロパティ値の最大長を指定します。 | Binary 、String |
Nullable |
プロパティに null 値を指定できるかどうかを指定します。 | すべてのプリミティブ型のプロパティ |
Precision |
Decimal 型のプロパティには、プロパティ値の桁数を指定します。 Time 型、DateTime 型、および DateTimeOffset 型のプロパティには、プロパティ値の秒の小数点以下の有効桁数を指定します。 |
DateTime 、DateTimeOffset 、Decimal 、Time |
Scale |
プロパティ値の小数点の右側の桁数を指定します。 | Decimal (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>