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


Ограничения типов (модель 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)