facet

分面用于向基元类型属性定义添加详细信息。 属性定义包含有关属性类型的信息,但通常需要更详细的信息。 例如,概念模型中的实体类型可能具有一个属性, String 其值不能设置为 null。 通过方面可以指定这种详细程度。

下表描述了 EDM 中支持的方面。

注释

分面的确切值和行为由使用 EDM 实现的运行时环境确定。

方面 DESCRIPTION 适用于
Collation 指定对属性的值执行比较和排序作时要使用的排序顺序(或排序序列)。 String
ConcurrencyMode 表示应使用属性的值来进行开放式并发检查。 所有基元类型属性
Default 如果实例化时未提供任何值,则指定属性的默认值。 所有基元类型属性
FixedLength 指定属性值的长度是否可以有所不同。 BinaryString
MaxLength 指定属性值的最大长度。 BinaryString
Nullable 指定属性是否可以具有 null 值。 所有基元类型属性
Precision 对于类型 Decimal属性,指定属性值可以具有的位数。 对于类型 TimeDateTimeDateTimeOffset的属性,指定属性值中秒的小数部分的位数。 DateTimeDateTimeOffsetDecimalTime
Scale 指定属性值小数点右侧的数字数。 十进制
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>

另请参阅