Facets (модель EDM)
В модели EDM аспекты представляют ограничения типов данных, которые обозначаются как свойства сущностей. В языке CSDL аспекты не используются платформой Entity Framework. В данном языке аспекты предоставляют сведения о типах данных, используемых источником данных и любых ограничениях, которые могут быть применены к системе управления базой данных.
В следующей декларации языка SSDL Product
EntityType атрибуты свойства, такие как 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, не вызывает ошибку компилятора.