facet

"ファセット" は、プリミティブ型のプロパティ定義の詳細を追加するために使用します。 プロパティ定義には、プロパティの型の情報が含まれますが、多くの場合、より詳しい情報が必要になります。 たとえば、概念モデルのエンティティ型に、値を null に設定できない String 型のプロパティが含まれる場合があります。 ファセットにより、このレベルの詳細を指定することができます。

下の表は、EDM でサポートされるファセットについて説明しています。

Note

ファセットの正確な値と動作は、EDM の実装を使用するランタイム環境によって決まります。

ファセット 説明 対象
Collation プロパティの値に対して比較と順序付け操作を行うときに使用する照合シーケンス (または並べ替え順序) を指定します。 String
ConcurrencyMode プロパティの値をオプティミスティック コンカレンシー チェックに使用することを指定します。 すべてのプリミティブ型のプロパティ
Default インスタンス化で値が指定されない場合のプロパティの既定値を指定します。 すべてのプリミティブ型のプロパティ
FixedLength プロパティ値の長さを可変とすることができるかどうかを指定します。 BinaryString
MaxLength プロパティ値の最大長を指定します。 BinaryString
Nullable プロパティに null 値を指定できるかどうかを指定します。 すべてのプリミティブ型のプロパティ
Precision Decimal 型のプロパティには、プロパティ値の桁数を指定します。 Time 型、DateTime 型、および DateTimeOffset 型のプロパティには、プロパティ値の秒の小数点以下の有効桁数を指定します。 DateTimeDateTimeOffsetDecimalTime
Scale プロパティ値の小数点の右側の桁数を指定します。 Decimal (10 進数型)
Unicode プロパティ値を Unicode として保存するかどうかを指定します。 String

ADO.NET Entity Framework では、概念スキーマ定義言語 (CSDL) と呼ばれるドメイン固有言語 (DSL) を使用して概念モデルを定義します。 次の CSDL は Book エンティティ型を定義しています。 ファセットは XML 属性として実装されています。 ファセット値は、プロパティ値を null に設定できないことと、Scale プロパティの PrecisionRevision がそれぞれ 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>

関連項目