Facet 可用來將詳細數據新增至基本類型屬性定義。
屬性定義包含屬性類型的相關信息,但通常需要更多詳細數據。 例如,概念模型中的實體類型可能有類型屬性 String ,其值不能設定為 null。 Facet 可讓您指定這個詳細層級。
下表描述了EDM中支援的這些面向。
備註
執行環境使用 EDM 實作來決定構面的確切值與行為。
| 方面 | 說明 | 適用對象 |
|---|---|---|
Collation |
指定在對屬性值執行比較和排序作業時要使用的定序序列(或排序順序)。 | String |
ConcurrencyMode |
表示屬性的值應該用於樂觀並行控制檢查。 | 所有基本類型屬性 |
Default |
如果具現化時未提供任何值,則指定 屬性的預設值。 | 所有基本類型屬性 |
FixedLength |
指定屬性值的長度是否可能有所不同。 |
Binary、String |
MaxLength |
指定屬性值的最大長度。 |
Binary、String |
Nullable |
指定屬性是否可以有 Null 值。 | 所有基本類型屬性 |
Precision |
針對類型的 Decimal屬性,指定屬性值可以擁有的位數。 針對類型為Time、DateTime和DateTimeOffset的屬性,指定屬性值中小數秒的位數。 |
DateTime、DateTimeOffset、Decimal、Time、 |
Scale |
指定屬性值小數點右邊的位數。 | 十進制 |
Unicode |
指出屬性值是否儲存為 Unicode。 | String |
範例
ADO.NET Entity Framework 會使用稱為概念架構定義語言 (CSDL) 的網域特定語言 (DSL) 來定義概念模型。 以下的 CSDL 會定義一個Book實體類型。 請注意,Facet 會實作為 XML 屬性。 Facet 值表示沒有任何屬性可以設定為 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>