faceta (Entity Data Model)
Una faceta se utiliza para agregar detalle a una definición de propiedad del tipo primitivo. Una definición de propiedad contiene información sobre el tipo de propiedad, pero a menudo es necesario especificar más detalles. Por ejemplo, un tipo de entidad en un modelo conceptual podría tener una propiedad de tipo String cuyo valor no se puede establecer en NULL. Las facetas permiten especificar este nivel de detalle.
En la siguiente tabla se describen las facetas que se admiten en EDM.
Nota: |
---|
El entorno de tiempo de ejecución que utiliza una implementación de EDM determina los valores exactos y los comportamientos de las facetas. |
Faceta | Descripción | Se aplica a |
---|---|---|
Collation |
Especifica la secuencia de intercalación (o secuencia de orden) que se va a utilizar cuando se realicen las operaciones de comparación y ordenado en los valores de la propiedad. |
String |
ConcurrencyMode |
Indica que el valor de propiedad se debería utilizar para las comprobaciones de la simultaneidad optimista. |
Todas las propiedades de tipo primitivo |
Default |
Especifica el valor predeterminado de la propiedad si no se proporciona ningún valor al crear las instancias. |
Todas las propiedades de tipo primitivo |
FixedLength |
Especifica si la longitud del valor de propiedad puede variar. |
Binary, String |
MaxLength |
Especifica la longitud máxima del valor de propiedad. |
Binary, String |
Nullable |
Especifica si la propiedad puede tener un valor NULL. |
Todas las propiedades de tipo primitivo |
Precision |
Para las propiedades de tipo Decimal, especifica el número de dígitos que un valor de propiedad puede tener. Para las propiedades de tipo Time, DateTime y DateTimeOffset, especifica el número de dígitos para la parte fraccionaria de los segundos del valor de propiedad. |
DateTime, DateTimeOffset, Decimal, Time, |
Scale |
Especifica el número de dígitos que puede haber a la derecha del separador de decimales para el valor de propiedad. |
Decimal |
Unicode |
Indica si el valor de propiedad está almacenado como Unicode. |
String |
Ejemplo
ADO.NET Entity Framework usa un lenguaje específico de dominio (DSL) denominado lenguaje de definición de esquemas conceptuales (CSDL) para definir los modelos conceptuales. En el ejemplo siguiente CSDL, se define un tipo de entidad Book. Observe que las facetas se implementan como atributos XML. Los valores de faceta indican que ninguna propiedad puede estar establecida en NULL, y que los valores Scale y Precision de la propiedad Revision están establecidos ambos en 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>