Поделиться через


Facets (модель EDM)

В модели EDM аспекты представляют ограничения типов данных, которые обозначаются как свойства сущностей. В языке CSDL аспекты не используются платформой Entity Framework. В данном языке аспекты предоставляют сведения о типах данных, используемых источником данных и любых ограничениях, которые могут быть применены к системе управления базой данных.

В следующей декларации языка SSDL ProductEntityType атрибуты свойства, такие как MaxLength, Nullable, Precision, Scale и StoreGeneratedPattern, являются аспектами. Свойство с аспектом StoreGeneratedPattern="Identity" является первичным ключом таблицы базы данных. Свойство, обозначенное с помощью атрибута StoreGeneratedPattern, назначается автоматически системой управления базой данных. Свойство сущности, сопоставленное данному столбцу таблицы, не устанавливается кодом приложения, и любой код, используемый для установки свойства, формирует исключение в источнике данных.

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

Аспекты в языке CSDL не оказывают влияния на конструируемую модель объектов. Конструктор сущностей удаляет аспекты при любых изменениях тех типов данных свойств, которые они обозначают. Как показано выше, указание в языке CSDL атрибута CSDL, параллельного атрибуту StoreGeneratedPattern языка SSDL, не вызывает ошибку компилятора.

См. также

Справочник

Facet