Compartir a través de


Facets (EDM)

En el Entity Data Model (EDM), facets (facetas) representan las restricciones en los tipos de datos que se declaran como propiedades de entidades. Entity Framework no utiliza facets (facetas) en el lenguaje de definición de esquemas conceptuales (CSDL). En el lenguaje de definición de esquemas de almacenamiento (SSDL), facets (facetas) proporcionan información sobre los tipos de datos utilizados por el origen de datos y sobre cualquier restricción que el sistema de administración de bases de datos podría aplicar.

En la declaración de SSDL siguiente del ProductEntityType, los atributos de propiedad, como MaxLength, Nullable, Precision, Scale y StoreGeneratedPattern, son facets (facetas). Una propiedad con facet (faceta) StoreGeneratedPattern="Identity" es la clave principal de una tabla de base de datos. El sistema de administración de bases de datos asigna automáticamente una propiedad decorada con el atributo StoreGeneratedPattern. El código de la aplicación no establece la propiedad de una entidad asignada a esta columna de la tabla y cualquier código utilizado para establecerla genera una excepción en el origen de datos.

<EntityType Name="Product">
  <Key>
    <PropertyRef Name="ProductID" />
  </Key>
  <Property Name="ProductID" Type="int" Nullable="false"
                      StoreGeneratedPattern="Identity" />
  <Property Name="Name" Type="nvarchar" 
                      Nullable="false" MaxLength="50" />
  <Property Name="ProductNumber" 
                    Type="nvarchar" Nullable="false" MaxLength="25"/>
  <Property Name="MakeFlag" Type="bit" Nullable="false" />
  <Property Name="FinishedGoodsFlag" 
                    Type="bit" Nullable="false" />
  <Property Name="Color" Type="nvarchar" MaxLength="15" />
  <Property Name="SafetyStockLevel" Type="smallint" Nullable="false"/>
  <Property Name="ReorderPoint" Type="smallint" Nullable="false" />
  <Property Name="StandardCost" Type="money" Nullable="false" />
  <Property Name="ListPrice" Type="money" Nullable="false" />
  <Property Name="Size" Type="nvarchar" MaxLength="5" />
  <Property Name="SizeUnitMeasureCode" Type="nchar" MaxLength="3" />
  <Property Name="WeightUnitMeasureCode" Type="nchar" MaxLength="3"/>
  <Property Name="Weight" Type="decimal" Precision="8" Scale="2" />
  <Property Name="DaysToManufacture" Type="int" Nullable="false" />
  <Property Name="ProductLine" Type="nchar" MaxLength="2" />
  <Property Name="Class" Type="nchar" MaxLength="2" />
  <Property Name="Style" Type="nchar" MaxLength="2" />
  <Property Name="ProductSubcategoryID" Type="int" />
  <Property Name="ProductModelID" Type="int" />
  <Property Name="SellStartDate" Type="datetime" Nullable="false" />
  <Property Name="SellEndDate" Type="datetime" />
  <Property Name="DiscontinuedDate" Type="datetime" />
  <Property Name="rowguid" Type="uniqueidentifier" Nullable="false" />
  <Property Name="ModifiedDate" Type="datetime" Nullable="false" />
</EntityType>

Facets (facetas) en CSDL no tienen ningún efecto en el modelo de objetos que se esté diseñando. El Entity Designer quita facets (facetas) si se realiza algún cambio en los tipos de datos de las propiedades que decoran. Un atributo paralelo en CSDL para el StoreGeneratedPattern de SSDL según se muestra anteriormente, si se especifica en el CSDL, no producirá un error del compilador.

Vea también

Referencia

Facet