Facets (EDM)
Entity Data Model (EDM) では、ファセットはエンティティのプロパティとして宣言されたデータ型に対する制約を表します。概念スキーマ定義言語 (CSDL) では、ファセットは Entity Framework で使用されません。ストア スキーマ定義言語 (SSDL) では、ファセットはデータ ソースで使用されるデータ型およびデータベース管理システムによって適用される可能性のある制約に関する情報を提供します。
次の Product
EntityType の SSDL 宣言では、MaxLength、Nullable、Precision、Scale、StoreGeneratedPattern などのプロパティ属性がファセットになります。StoreGeneratedPattern="Identity"
ファセットを使用するプロパティは、データベース テーブルの主キーになります。StoreGeneratedPattern 属性で修飾されたプロパティは、データベース管理システムによって自動的に割り当てられます。テーブルのこの列にマップされたエンティティのプロパティはアプリケーション コードでは設定されず、プロパティの設定に使用されるどのコードでも、データ ソースで例外が発生します。
<EntityType Name="Product">
<Key>
<PropertyRef Name="ProductID" />
</Key>
<Property Name="ProductID" Type="int" Nullable="false"
StoreGeneratedPattern="Identity" />
<Property Name="Name" Type="nvarchar"
Nullable="false" MaxLength="50" />
<Property Name="ProductNumber"
Type="nvarchar" Nullable="false" MaxLength="25"/>
<Property Name="MakeFlag" Type="bit" Nullable="false" />
<Property Name="FinishedGoodsFlag"
Type="bit" Nullable="false" />
<Property Name="Color" Type="nvarchar" MaxLength="15" />
<Property Name="SafetyStockLevel" Type="smallint" Nullable="false"/>
<Property Name="ReorderPoint" Type="smallint" Nullable="false" />
<Property Name="StandardCost" Type="money" Nullable="false" />
<Property Name="ListPrice" Type="money" Nullable="false" />
<Property Name="Size" Type="nvarchar" MaxLength="5" />
<Property Name="SizeUnitMeasureCode" Type="nchar" MaxLength="3" />
<Property Name="WeightUnitMeasureCode" Type="nchar" MaxLength="3"/>
<Property Name="Weight" Type="decimal" Precision="8" Scale="2" />
<Property Name="DaysToManufacture" Type="int" Nullable="false" />
<Property Name="ProductLine" Type="nchar" MaxLength="2" />
<Property Name="Class" Type="nchar" MaxLength="2" />
<Property Name="Style" Type="nchar" MaxLength="2" />
<Property Name="ProductSubcategoryID" Type="int" />
<Property Name="ProductModelID" Type="int" />
<Property Name="SellStartDate" Type="datetime" Nullable="false" />
<Property Name="SellEndDate" Type="datetime" />
<Property Name="DiscontinuedDate" Type="datetime" />
<Property Name="rowguid" Type="uniqueidentifier" Nullable="false" />
<Property Name="ModifiedDate" Type="datetime" Nullable="false" />
</EntityType>
CSDL のファセットは、設計対象のオブジェクト モデルに対しては無効です。修飾したプロパティのデータ型に変更が加えられた場合、エンティティ デザイナはファセットを削除します。上記に示す SSDL 内の StoreGeneratedPattern に対する CSDL の並列属性を CSDL で指定しても、コンパイル エラーは発生しません。