分面用于向基元类型属性定义添加详细信息。
属性定义包含有关属性类型的信息,但通常需要更详细的信息。 例如,概念模型中的实体类型可能具有一个属性, String 其值不能设置为 null。 通过方面可以指定这种详细程度。
下表描述了 EDM 中支持的方面。
注释
分面的确切值和行为由使用 EDM 实现的运行时环境确定。
| 方面 | DESCRIPTION | 适用于 |
|---|---|---|
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 类型。 请注意,方面是作为 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>