facet
方面用于将详细信息添加到基元类型属性定义。 属性定义包含有关属性类型的信息,但通常还必须提供更详细的信息。 例如,概念模型中的实体类型可能有一个类型为 String
的属性,其值不能设置为 null。 通过方面可以指定这种详细程度。
下表描述了 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 实体框架使用一种称为概念架构定义语言 (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>