Freigeben über


Facets (EDM)

Im EDM stellen Facets Einschränkungen für Datentypen dar, die als Eigenschaften von Entitäten deklariert sind. In der konzeptionellen Schemadefinitionssprache (CSDL) werden Facets nicht vom Entity Framework verwendet. In der Datenspeicherschema-Definitionssprache (SSDL) stellen Facets Informationen über die von der Datenquelle verwendeten Datentypen und über alle Einschränkungen bereit, die möglicherweise vom Datenbankverwaltungssystem angewendet werden.

In der folgenden SSDL-Deklaration von ProductEntityType sind die Eigenschaftsattribute, wie z. B. MaxLength, Nullable, Precision, Scale und StoreGeneratedPattern, Facets. Eine Eigenschaft mit dem StoreGeneratedPattern="Identity"-Facet ist der Primärschlüssel einer Basistabelle. Eine Eigenschaft mit dem StoreGeneratedPattern-Attribut wird vom Datenbankmanagementsystem automatisch zugewiesen. Die Eigenschaft einer Entität, die dieser Spalte der Tabelle zugeordnet ist, ist nicht durch den Anwendungscode festgelegt, und jeder Code, der zum Festlegen der Eigenschaften verwendet wird, generiert eine Ausnahme in der Datenquelle.

<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 in CSDL haben keine Auswirkungen auf das zu entwerfende Objektmodell. Der Entity Designer entfernt Facets, wenn Änderungen an den Datentypen der Eigenschaften, denen sie zugewiesen sind, vorgenommen werden. Ein paralleles Attribut in CSDL für das StoreGeneratedPattern in SSDL verursacht, wie oben gezeigt, keinen Compilerfehler, wenn es in CSDL angegeben ist.

Siehe auch

Verweis

Facet