Ограничения типов (модель EDM)
Модель Entity Data Model (модель EDM) поддерживает спецификацию ограничений для свойств типов ее сущностей. Ограничения сокращают количество возможных значений свойства, а также проверяют не только то, что значение свойства имеет правильный тип данных, но также и то, что данное значение удовлетворяет требованиям приложения.
Ограничение, допускающее значение NULL
Для любого свойства можно установить ограничение Nullable. Ограничение Nullable представляет собой ограничение простейшего вида и указывает, может ли значение свойства оставаться незаданным или равным Null
.
Свойство Key сущности используется для определения экземпляров типа в приложениях. При создании сущности свойству Key необходимо присвоить значение. Ограничение Nullable всегда является обязательным применительно к свойству сущности, которое содержит свойство Key, а присваивание ограничению Nullable значения false позволяет предотвратить создание экземпляров сущностей без идентификаторов.
В следующей схеме указываются ограничения Nullable для свойств типа Person. Свойство EMailID
может иметь значение Null
, но для свойства Name
должно быть задано значение, поскольку иначе возникнет ошибка времени выполнения при сохранении в коде этого типа в хранилище.
<EntityType Name="Person">
<Key>
<PropertyRef Name="Name" />
</Key>
<Property Name="Name" Type="String" Nullable="false" />
<Property Name="EmailID" Type="String" Nullable="false" />
<Property Name="Address" Type="AddressType" Nullable="true" />
<Property Name="PhoneNumber" Type="String" />
</EntityType>
Как и в SQL Server, значением по умолчанию для атрибута Null
является true
. В данном примере не заданными могут быть значения свойств Address
и PhoneNumber
.
Атрибут Default
Атрибут Default задает значение для свойства, если значение не было указано при создании экземпляра сущности. В следующем примере свойство Locale
принимает значение по умолчанию NW Region
, если при создании нового экземпляра Customer
не было указано другое значение.
<EntityType Name="Customer">
<Key>
<PropertyRef Name="CustomerId" />
</Key>
<Property Name="CustomerId" Type="String" Nullable="false" />
<Property Name="Name" Type="String" Nullable="false" />
<Property Name="Locale" Type="String" Default="NW Region"/>
<!--Other Properties-->
</EntityType>
См. также
Основные понятия
Атрибуты GetterAccess и SetterAccess (язык CSDL)
Простые типы (модель EDM)