facet
A facet is used to add detail to a primitive type property definition. A property definition contains information about the property type, but often more detail is necessary. For example, an entity type in a conceptual model might have a property of type String
whose value cannot be set to null. Facets allow you to specify this level of detail.
The table below describes the facets that are supported in the EDM.
Note
The exact values and behaviors of facets are determined by the run-time environment that uses an EDM implementation.
Facet | Description | Applies to |
---|---|---|
Collation |
Specifies the collating sequence (or sorting sequence) to be used when performing comparison and ordering operations on values of the property. | String |
ConcurrencyMode |
Indicates that the value of the property should be used for optimistic concurrency checks. | All primitive type properties |
Default |
Specifies the default value of the property if no value is supplied upon instantiation. | All primitive type properties |
FixedLength |
Specifies whether the length of the property value can vary. | Binary , String |
MaxLength |
Specifies the maximum length of the property value. | Binary , String |
Nullable |
Specifies whether the property can have a null value. | All primitive type properties |
Precision |
For properties of type Decimal , specifies the number of digits a property value can have. For properties of type Time , DateTime , and DateTimeOffset , specifies the number of digits for the fractional part of seconds of the property value. |
DateTime , DateTimeOffset , Decimal , Time , |
Scale |
Specifies the number of digits to the right of the decimal point for the property value. | Decimal |
Unicode |
Indicates whether the property value is stored as Unicode. | String |
Example
The ADO.NET Entity Framework uses a domain-specific language (DSL) called conceptual schema definition language (CSDL) to define conceptual models. The following CSDL defines a Book
entity type. Note that facets are implemented as XML attributes. The facet values indicate that no property can be set to null, and that the Scale
and Precision
of the Revision
property are each set to 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>