Partager via


Facets (EDM)

Dans le modèle EDM (Entity Data Model), les facettes représentent des contraintes sur les types de données déclarés en tant que propriétés d'entités. En CSDL (Conceptual Schema Definition Language), les facettes ne sont pas utilisées par Entity Framework. En SSDL (Store Schema Definition Language), les facettes fournissent des informations sur les types de données utilisés par la source de données et sur les contraintes qui peuvent être appliquées par le système de gestion de base de données.

Dans la déclaration SSDL suivante de l'EntityTypeProduct, les attributs de propriété, tels que MaxLength, Nullable, Precision, Scale et StoreGeneratedPattern, sont des facettes. Une propriété présentant la facette StoreGeneratedPattern="Identity" constitue la clé primaire d'une table de base de données. Une propriété décorée avec l'attribut StoreGeneratedPattern est attribuée automatiquement par le système de gestion de base de données. La propriété d'une entité mappée à cette colonne de la table n'est pas définie par le code d'application, et tout code utilisé pour définir la propriété génère une exception dans la source de données.

<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>

En CSDL, les facettes sont sans effet sur le modèle objet en cours de conception. Le Concepteur d'entités supprime les facettes si des modifications sont apportées aux types de données de propriétés qu'ils décorent. Un attribut CSDL équivalent de StoreGeneratedPattern en SSDL, comme indiqué ci-dessus, ne provoque pas d'erreur du compilateur s'il est spécifié en CSDL.

Voir aussi

Référence

Facet