Спецификация SSDL

SSDL представляет собой язык на основе XML, на котором описывается модель хранения в приложениях Entity Framework.

В приложении Entity Framework метаданные модели хранения загружаются из SSDL-файла (записанного в SSDL) в экземпляр System.Data.Metadata.Edm.StoreItemCollection и доступны с помощью методов в классе System.Data.Metadata.Edm.MetadataWorkspace. Entity Framework использует метаданные модели хранения для перевода запросов к концептуальной модели в команды, относящиеся к хранилищу.

Конструктор Entity Framework (EF Designer) сохраняет сведения о модели хранения в edmx-файле во время разработки. Во время сборки конструктор сущностей использует сведения в edmx-файле для создания SSDL-файла, необходимого Entity Framework во время выполнения.

Версии языка SSDL различаются по пространствам имен XML.

Версия SSDL Пространство имен XML
SSDL версии 1 https://schemas.microsoft.com/ado/2006/04/edm/ssdl
SSDL версии 2 https://schemas.microsoft.com/ado/2009/02/edm/ssdl
SSDL версии 3 https://schemas.microsoft.com/ado/2009/11/edm/ssdl

Элемент Association (SSDL)

Элемент Association в языке определения схемы хранилища (SSDL) задает столбцы таблицы, участвующие в ограничении внешнего ключа в базовой базе данных. Два обязательных дочерних элемента указывают таблицы в концах ассоциации и кратность в каждом конце. Необязательный элемент ReferentialConstraint указывает основные и зависимые концы ассоциации, а также участвующие столбцы. Если элемент ReferentialConstraint отсутствует, необходимо использовать элемент AssociationSetMapping для указания сопоставлений столбцов.

Элемент Association может содержать следующие дочерние элементы (в указанном порядке):

  • Документация (ноль или одна)
  • Конец (ровно два)
  • ReferentialConstraint (ноль или один)
  • Элементы заметки (ноль или больше)

Применимые атрибуты

В следующей таблице описаны атрибуты, которые можно применить к элементу Association .

Имя атрибута Обязательно Значение
Название Да Имя соответствующего ограничения внешнего ключа в основной базе данных.

Примечание.

Любое количество атрибутов заметки (настраиваемые XML-атрибуты) может применяться к элементу Association . Однако настраиваемые атрибуты не могут принадлежать к любому пространству имен XML, зарезервированному для SSDL. Полные имена любых двух настраиваемых атрибутов не могут совпадать.

Пример

В следующем примере показан элемент Association , использующий элемент ReferentialConstraint , чтобы указать столбцы, участвующие в ограничении внешнего ключа FK_CustomerOrders :

 <Association Name="FK_CustomerOrders">
   <End Role="Customers"
        Type="ExampleModel.Store.Customers" Multiplicity="1">
     <OnDelete Action="Cascade" />
   </End>
   <End Role="Orders"
        Type="ExampleModel.Store.Orders" Multiplicity="*" />
   <ReferentialConstraint>
     <Principal Role="Customers">
       <PropertyRef Name="CustomerId" />
     </Principal>
     <Dependent Role="Orders">
       <PropertyRef Name="CustomerId" />
     </Dependent>
   </ReferentialConstraint>
 </Association>

Элемент AssociationSet (SSDL)

Элемент AssociationSet в языке определения схемы хранилища (SSDL) представляет ограничение внешнего ключа между двумя таблицами в базовой базе данных. Столбцы таблицы, участвующие в ограничении внешнего ключа, указываются в элементе Association. Элемент Association, соответствующий заданному элементу AssociationSet, указывается в атрибуте Association элемента AssociationSet.

Наборы связей SSDL сопоставляются с наборами связей CSDL элементом AssociationSetMapping. Однако если связь CSDL для заданного набора связей CSDL определена с помощью элемента ReferentialConstraint, соответствующий элемент AssociationSetMapping не требуется. В этом случае, если элемент AssociationSetMapping присутствует, сопоставления, которые он определяет, будут переопределены элементом ReferentialConstraint .

Элемент AssociationSet может содержать следующие дочерние элементы (в указанном порядке):

  • Документация (ноль или одна)
  • Конец (ноль или два)
  • Элементы заметки (ноль или больше)

Применимые атрибуты

В следующей таблице описаны атрибуты, которые можно применить к элементу AssociationSet .

Имя атрибута Обязательно Значение
Название Да Имя ограничения внешнего ключа, представленное набором ассоциаций.
Ассоциации Да Имя ассоциации, определяющее столбцы, которые участвуют в ограничении внешнего ключа.

Примечание.

Любое количество атрибутов заметки (настраиваемые XML-атрибуты) может применяться к элементу AssociationSet . Однако настраиваемые атрибуты не могут принадлежать к любому пространству имен XML, зарезервированному для SSDL. Полные имена любых двух настраиваемых атрибутов не могут совпадать.

Пример

В следующем примере показан элемент AssociationSet , представляющий FK_CustomerOrders ограничение внешнего ключа в базовой базе данных:

 <AssociationSet Name="FK_CustomerOrders"
                 Association="ExampleModel.Store.FK_CustomerOrders">
   <End Role="Customers" EntitySet="Customers" />
   <End Role="Orders" EntitySet="Orders" />
 </AssociationSet>

Элемент CollectionType (SSDL)

Элемент CollectionType в языке определения схемы хранилища (SSDL) указывает, что возвращаемый тип функции является коллекцией. Элемент CollectionType является дочерним элементом элемента ReturnType . Тип коллекции указывается с помощью дочернего элемента RowType:

Примечание.

Любое количество атрибутов заметки (настраиваемые XML-атрибуты) может применяться к элементу CollectionType . Однако настраиваемые атрибуты не могут принадлежать к любому пространству имен XML, зарезервированному для SSDL. Полные имена любых двух настраиваемых атрибутов не могут совпадать.

Пример

В следующем примере показана функция, использующая элемент CollectionType , чтобы указать, что функция возвращает коллекцию строк.

   <Function Name="GetProducts" IsComposable="true" Schema="dbo">
     <ReturnType>
       <CollectionType>
         <RowType>
           <Property Name="ProductID" Type="int" Nullable="false" />
           <Property Name="CategoryID" Type="bigint" Nullable="false" />
           <Property Name="ProductName" Type="nvarchar" MaxLength="40" Nullable="false" />
           <Property Name="UnitPrice" Type="money" />
           <Property Name="Discontinued" Type="bit" />
         </RowType>
       </CollectionType>
     </ReturnType>
   </Function>

Элемент CommandText (SSDL)

Элемент CommandText в языке определения схемы хранилища (SSDL) является дочерним элементом элемента Function, который позволяет определить инструкцию SQL, выполняемую в базе данных. Элемент CommandText позволяет добавлять функции, аналогичные хранимой процедуре в базе данных, но определяете элемент CommandText в модели хранения.

Элемент CommandText не может содержать дочерние элементы. Текст элемента CommandText должен быть допустимым оператором SQL для базовой базы данных.

Атрибуты не применимы к элементу CommandText .

Пример

В следующем примере показан элемент Function с дочерним элементом CommandText . Предоставьте функцию UpdateProductInOrder в качестве метода объекта ObjectContext, импортируя ее в концептуальную модель.  

 <Function Name="UpdateProductInOrder" IsComposable="false">
   <CommandText>
     UPDATE Orders
     SET ProductId = @productId
     WHERE OrderId = @orderId;
   </CommandText>
   <Parameter Name="productId"
              Mode="In"
              Type="int"/>
   <Parameter Name="orderId"
              Mode="In"
              Type="int"/>
 </Function>

Элемент DefiningQuery (SSDL)

Элемент DefiningQuery в языке определения схемы хранилища (SSDL) позволяет выполнять инструкцию SQL непосредственно в базовой базе данных. Элемент DefiningQuery обычно используется как представление базы данных, но представление определяется в модели хранения вместо базы данных. Представление, определенное в элементе DefiningQuery , можно сопоставить с типом сущности в концептуальной модели с помощью элемента EntitySetMapping. Такие сопоставления предназначены только для чтения.  

Следующий синтаксис SSDL показывает объявление EntitySet , за которым следует элемент DefiningQuery , содержащий запрос, используемый для получения представления.

 <Schema>
     <EntitySet Name="Tables" EntityType="Self.STable">
         <DefiningQuery>
           SELECT  TABLE_CATALOG,
                   'test' as TABLE_SCHEMA,
                   TABLE_NAME
           FROM    INFORMATION_SCHEMA.TABLES
         </DefiningQuery>
     </EntitySet>
 </Schema>

Хранимые процедуры в Entity Framework можно использовать для включения сценариев чтения и записи по представлениям. Вы можете использовать представление источника данных или представление Entity SQL в качестве базовой таблицы для получения данных и обработки изменений хранимыми процедурами.

Элемент DefiningQuery можно использовать для назначения Microsoft SQL Server Compact 3.5. Хотя SQL Server Compact 3.5 не поддерживает хранимые процедуры, вы можете реализовать аналогичные функции с помощью элемента DefiningQuery . Этот элемент также может быть полезен при создании хранимых процедур для преодоления несоответствий между типами данных, используемых в языке программирования, и типами данных источника данных. Вы можете написать определениеQuery , который принимает определенный набор параметров, а затем вызывает хранимую процедуру с другим набором параметров, например хранимую процедуру, которая удаляет данные.

Элемент Dependent (SSDL)

Зависимый элемент в языке определения схемы хранилища (SSDL) является дочерним элементом элемента ReferentialConstraint, который определяет зависимый конец ограничения внешнего ключа (также называемое ограничением ссылки). Элемент Зависимый указывает столбец (или столбцы) в таблице, ссылающейся на первичный ключевой столбец (или столбцы). Элементы PropertyRef указывают, на какие столбцы ссылаются. Элемент Principal указывает столбцы первичного ключа, на которые ссылается столбцы, указанные в элементе Зависимый.

Элемент Зависимый может содержать следующие дочерние элементы (в указанном порядке):

  • PropertyRef (один или несколько)
  • Элементы заметки (ноль или больше)

Применимые атрибуты

В следующей таблице описаны атрибуты, которые можно применить к зависимому элементу.

Имя атрибута Обязательно Значение
Роль Да То же значение, что и атрибут Role (если используется) соответствующего элемента End; в противном случае — имя таблицы, содержащей столбец ссылки.

Примечание.

Любое количество атрибутов заметки (настраиваемые XML-атрибуты) может применяться к элементу Зависимый. Однако настраиваемые атрибуты не могут принадлежать к любому пространству имен XML, зарезервированному для CSDL. Полные имена любых двух настраиваемых атрибутов не могут совпадать.

Пример

В следующем примере показан элемент Association, использующий элемент ReferentialConstraint , чтобы указать столбцы, участвующие в ограничении внешнего ключа FK_CustomerOrders . Элемент Зависимый указывает столбец CustomerId таблицы Order в качестве зависимого конца ограничения.

 <Association Name="FK_CustomerOrders">
   <End Role="Customers"
        Type="ExampleModel.Store.Customers" Multiplicity="1">
     <OnDelete Action="Cascade" />
   </End>
   <End Role="Orders"
        Type="ExampleModel.Store.Orders" Multiplicity="*" />
   <ReferentialConstraint>
     <Principal Role="Customers">
       <PropertyRef Name="CustomerId" />
     </Principal>
     <Dependent Role="Orders">
       <PropertyRef Name="CustomerId" />
     </Dependent>
   </ReferentialConstraint>
 </Association>

Элемент Documentation (SSDL)

Элемент Документации в языке определения схемы хранилища (SSDL) можно использовать для предоставления сведений об объекте, определенном в родительском элементе.

Элемент Documentation может содержать следующие дочерние элементы (в указанном порядке):

  • Сводка. Краткое описание родительского элемента. (ноль или один элемент)
  • LongDescription: обширное описание родительского элемента. (ноль или один элемент)

Применимые атрибуты

Любое количество атрибутов заметки (настраиваемые XML-атрибуты) может применяться к элементу Documentation . Однако настраиваемые атрибуты не могут принадлежать к любому пространству имен XML, зарезервированному для CSDL. Полные имена любых двух настраиваемых атрибутов не могут совпадать.

Пример

В следующем примере показан элемент Documentation в качестве дочернего элемента элемента EntityType.

 <EntityType Name="Customers">
   <Documentation>
     <Summary>Summary here.</Summary>
     <LongDescription>Long description here.</LongDescription>
   </Documentation>
   <Key>
     <PropertyRef Name="CustomerId" />
   </Key>
   <Property Name="CustomerId" Type="int" Nullable="false" />
   <Property Name="Name" Type="nvarchar(max)" Nullable="false" />
 </EntityType>

Элемент End (SSDL)

Элемент End в языке определения схемы хранилища (SSDL) указывает таблицу и количество строк в одной части ограничения внешнего ключа в базовой базе данных. Элемент End может быть дочерним элементом элемента Association или элементом AssociationSet. В каждом из этих случаев дочерние элементы и применимые атрибуты будут различными.

Элемент End как дочерний по отношению к элементу Association

Элемент End (в качестве дочернего элемента Association ) указывает таблицу и количество строк в конце ограничения внешнего ключа с атрибутами Type и Умножения соответственно. Элементы ограничения внешнего ключа определяются как часть ассоциации SSDL. Ассоциация SSDL должна содержать ровно два элемента.

Элемент End может содержать следующие дочерние элементы (в указанном порядке):

  • Документация (ноль или один элемент)
  • OnDelete (ноль или один элемент)
  • Элементы заметки (ноль или больше элементов)

Применимые атрибуты

В следующей таблице описываются атрибуты, которые можно применять к элементу End , когда он является дочерним элементом элемента Association .

Имя атрибута Обязательно Значение
Тип Да Полное имя набора сущностей SSDL, который находится в конце ограничения внешнего ключа.
Роль No Значение атрибута Role в элементе Principal или Dependent соответствующего элемента ReferentialConstraint (если используется).
Кратность Да 1, 0.1 или * в зависимости от количества строк, которые могут находиться в конце ограничения внешнего ключа.
1 указывает, что в конце ограничения внешнего ключа существует ровно одна строка.
0.1 указывает, что в конце ограничения внешнего ключа существует ноль или одна строка.
* указывает, что в конце ограничения внешнего ключа существуют ноль, одна или несколько строк.

Примечание.

Любое количество атрибутов заметки (настраиваемые XML-атрибуты) может применяться к элементу End . Однако настраиваемые атрибуты не могут принадлежать к любому пространству имен XML, зарезервированному для CSDL. Полные имена любых двух настраиваемых атрибутов не могут совпадать.

Пример

В следующем примере показан элемент Association, определяющий ограничение внешнего ключа FK_CustomerOrders. Значения кратности, указанные в каждом элементе End, указывают на то, что многие строки в таблице Orders могут быть связаны со строкой в таблице Customers, но только одна строка в таблице Customers может быть связана со строкой в таблице Orders. Кроме того, элемент OnDelete указывает, что все строки в таблице Orders, ссылающиеся на определенную строку в таблице Customers, будут удалены, если строка в таблице Customers удаляется.

 <Association Name="FK_CustomerOrders">
   <End Role="Customers"
        Type="ExampleModel.Store.Customers" Multiplicity="1">
     <OnDelete Action="Cascade" />
   </End>
   <End Role="Orders"
        Type="ExampleModel.Store.Orders" Multiplicity="*" />
   <ReferentialConstraint>
     <Principal Role="Customers">
       <PropertyRef Name="CustomerId" />
     </Principal>
     <Dependent Role="Orders">
       <PropertyRef Name="CustomerId" />
     </Dependent>
   </ReferentialConstraint>
 </Association>

Элемент End как дочерний по отношению к элементу AssociationSet

Элемент End (в качестве дочернего элемента AssociationSet ) задает таблицу в одной части ограничения внешнего ключа в базовой базе данных.

Элемент End может содержать следующие дочерние элементы (в указанном порядке):

  • Документация (ноль или одна)
  • Элементы заметки (ноль или больше)

Применимые атрибуты

В следующей таблице описываются атрибуты, которые можно применять к элементу End , когда он является дочерним элементом элемента AssociationSet .

Имя атрибута Обязательно Значение
Entityset Да Имя набора сущностей SSDL, который находится в конце ограничения внешнего ключа.
Роль No Значение одного из атрибутов Role , указанного в одном элементе End соответствующего элемента Association.

Примечание.

Любое количество атрибутов заметки (настраиваемые XML-атрибуты) может применяться к элементу End . Однако настраиваемые атрибуты не могут принадлежать к любому пространству имен XML, зарезервированному для CSDL. Полные имена любых двух настраиваемых атрибутов не могут совпадать.

Пример

В следующем примере показан элемент EntityContainer с элементом AssociationSet с двумя элементами End:

 <EntityContainer Name="ExampleModelStoreContainer">
   <EntitySet Name="Customers"
              EntityType="ExampleModel.Store.Customers"
              Schema="dbo" />
   <EntitySet Name="Orders"
              EntityType="ExampleModel.Store.Orders"
              Schema="dbo" />
   <AssociationSet Name="FK_CustomerOrders"
                   Association="ExampleModel.Store.FK_CustomerOrders">
     <End Role="Customers" EntitySet="Customers" />
     <End Role="Orders" EntitySet="Orders" />
   </AssociationSet>
 </EntityContainer>

Элемент EntityContainer (SSDL)

Элемент EntityContainer в языке определения схемы хранилища (SSDL) описывает структуру базового источника данных в приложении Entity Framework: наборы сущностей SSDL (определенные в элементах EntitySet) представляют таблицы в базе данных, типы сущностей SSDL (определенные в элементах EntityType) представляют строки в таблице и наборы ассоциаций (определенные в элементах AssociationSet) представляют ограничения внешнего ключа в базе данных. Контейнер сущностей модели хранения сопоставляется с контейнером сущностей концептуальной модели с помощью элемента EntityContainerMapping.

Элемент EntityContainer может иметь ноль или один элемент Документации. Если элемент Documentation присутствует, он должен предшествовать всем другим дочерним элементам.

Элемент EntityContainer может иметь ноль или более следующих дочерних элементов (в указанном порядке):

  • EntitySet
  • AssociationSet
  • Элементы Annotation

Применимые атрибуты

В таблице ниже описаны атрибуты, которые можно применить к элементу EntityContainer .

Имя атрибута Обязательно Значение
Название Да Имя контейнера сущностей. Это имя не может содержать точек (.).

Примечание.

Любое количество атрибутов заметки (настраиваемые XML-атрибуты) может применяться к элементу EntityContainer . Однако настраиваемые атрибуты не могут принадлежать к любому пространству имен XML, зарезервированному для SSDL. Полные имена любых двух настраиваемых атрибутов не могут совпадать.

Пример

В следующем примере показан элемент EntityContainer, определяющий два набора сущностей и один набор ассоциаций. Обратите внимание, что тип сущности и имена типов ассоциаций определяются именем пространства имен концептуальной модели.

 <EntityContainer Name="ExampleModelStoreContainer">
   <EntitySet Name="Customers"
              EntityType="ExampleModel.Store.Customers"
              Schema="dbo" />
   <EntitySet Name="Orders"
              EntityType="ExampleModel.Store.Orders"
              Schema="dbo" />
   <AssociationSet Name="FK_CustomerOrders"
                   Association="ExampleModel.Store.FK_CustomerOrders">
     <End Role="Customers" EntitySet="Customers" />
     <End Role="Orders" EntitySet="Orders" />
   </AssociationSet>
 </EntityContainer>

Элемент EntitySet (SSDL)

Элемент EntitySet в языке определения схемы хранилища (SSDL) представляет таблицу или представление в базовой базе данных. Элемент EntityType в SSDL представляет строку в таблице или представлении. Атрибут EntityType элемента EntitySet указывает конкретный тип сущности SSDL, представляющий строки в наборе сущностей SSDL. Сопоставление между набором сущностей CSDL и набором сущностей SSDL указывается в элементе EntitySetMapping.

Элемент EntitySet может содержать следующие дочерние элементы (в указанном порядке):

  • Документация (ноль или один элемент)
  • ОпределениеQuery (ноль или один элемент)
  • Элементы Annotation

Применимые атрибуты

В следующей таблице описываются атрибуты, которые можно применить к элементу EntitySet .

Примечание.

Некоторые атрибуты (не перечисленные здесь) могут быть квалифицированы с помощью псевдонима магазина . Эти атрибуты используются мастером модели обновления при обновлении модели.

Имя атрибута Обязательно Значение
Название Да Имя набора сущностей.
Entitytype Да Полное имя типа сущности, для которого набор сущностей содержит экземпляры.
Схема No Схема базы данных.
Таблицу No Таблица базы данных.

Примечание.

Любое количество атрибутов заметки (настраиваемые XML-атрибуты) может применяться к элементу EntitySet . Однако настраиваемые атрибуты не могут принадлежать к любому пространству имен XML, зарезервированному для SSDL. Полные имена любых двух настраиваемых атрибутов не могут совпадать.

Пример

В следующем примере показан элемент EntityContainer с двумя элементами EntitySet и одним элементом AssociationSet:

 <EntityContainer Name="ExampleModelStoreContainer">
   <EntitySet Name="Customers"
              EntityType="ExampleModel.Store.Customers"
              Schema="dbo" />
   <EntitySet Name="Orders"
              EntityType="ExampleModel.Store.Orders"
              Schema="dbo" />
   <AssociationSet Name="FK_CustomerOrders"
                   Association="ExampleModel.Store.FK_CustomerOrders">
     <End Role="Customers" EntitySet="Customers" />
     <End Role="Orders" EntitySet="Orders" />
   </AssociationSet>
 </EntityContainer>

Элемент EntityType (SSDL)

Элемент EntityType в языке определения схемы хранилища (SSDL) представляет строку в таблице или представлении базовой базы данных. Элемент EntitySet в SSDL представляет таблицу или представление, в котором происходят строки. Атрибут EntityType элемента EntitySet указывает конкретный тип сущности SSDL, представляющий строки в наборе сущностей SSDL. Сопоставление между типом сущности SSDL и типом сущности CSDL указывается в элементе EntityTypeMapping.

Элемент EntityType может содержать следующие дочерние элементы (в указанном порядке):

  • Документация (ноль или один элемент)
  • Ключ (ноль или один элемент)
  • Элементы Annotation

Применимые атрибуты

В таблице ниже описаны атрибуты, которые можно применить к элементу EntityType .

Имя атрибута Обязательно Значение
Название Да Имя типа сущности. Данное значение обычно совпадает с именем таблицы, в которой тип сущности представляет строку. Это значение не может содержать точек (.).

Примечание.

Любое количество атрибутов заметки (настраиваемые XML-атрибуты) может применяться к элементу EntityType . Однако настраиваемые атрибуты не могут принадлежать к любому пространству имен XML, зарезервированному для SSDL. Полные имена любых двух настраиваемых атрибутов не могут совпадать.

Пример

В следующем примере показан элемент EntityType с двумя свойствами:

 <EntityType Name="Customers">
   <Documentation>
     <Summary>Summary here.</Summary>
     <LongDescription>Long description here.</LongDescription>
   </Documentation>
   <Key>
     <PropertyRef Name="CustomerId" />
   </Key>
   <Property Name="CustomerId" Type="int" Nullable="false" />
   <Property Name="Name" Type="nvarchar(max)" Nullable="false" />
 </EntityType>

Элемент Function (SSDL)

Элемент Function в языке определения схемы хранилища (SSDL) задает хранимую процедуру, которая существует в базовой базе данных.

Элемент Function может содержать следующие дочерние элементы (в указанном порядке):

  • Документация (ноль или одна)
  • Параметр (ноль или больше)
  • CommandText (ноль или один)
  • ReturnType (ноль или больше)
  • Элементы заметки (ноль или больше)

Возвращаемый тип функции должен быть указан с элементом ReturnType или атрибутом ReturnType (см. ниже), но не с обоими.

Хранимая процедура, указанная в модели хранения, может быть импортирована в концептуальную модель приложения. Дополнительные сведения см. в разделе "Запросы с помощью хранимых процедур". Элемент Function также можно использовать для определения пользовательских функций в модели хранения.  

Применимые атрибуты

В следующей таблице описываются атрибуты, которые можно применить к элементу Function .

Примечание.

Некоторые атрибуты (не перечисленные здесь) могут быть квалифицированы с помощью псевдонима магазина . Эти атрибуты используются мастером модели обновления при обновлении модели.

Имя атрибута Обязательно Значение
Название Да Имя хранимой процедуры.
Returntype No Возвращаемый тип хранимой процедуры.
Общая No Значение True , если хранимая процедура возвращает статистическое значение; в противном случае — false.
Builtin No Значение True , если функция является встроеннойфункцией 1 ; в противном случае — false.
StoreFunctionName No Имя хранимой процедуры.
NiladicFunction No Значение true , если функция является ниладическойфункцией 2 ; Значение false. В противном случае.
IsComposable No Значение true , если функция является составной3-й функцией; Значение false. В противном случае.
ParameterTypeSemantics No Перечисление, определяющее семантику типа, которая используется для разрешения перегрузок функций. Перечисление определено в манифесте поставщика для определения функции. Значением по умолчанию является AllowImplicitConversion.
Схема No Имя схемы, в которой определена хранимая процедура.

1 Встроенная функция — это функция, определенная в базе данных. Сведения о функциях, определенных в модели хранения, см. в разделе CommandText Element (SSDL).

2 Ниладическая функция — это функция, которая принимает никаких параметров и при вызове не требует круглых скобок.

3 Две функции можно создавать, если выходные данные одной функции могут быть входными данными для другой функции.

Примечание.

Любое количество атрибутов заметки (настраиваемые XML-атрибуты) может применяться к элементу Function . Однако настраиваемые атрибуты не могут принадлежать к любому пространству имен XML, зарезервированному для SSDL. Полные имена любых двух настраиваемых атрибутов не могут совпадать.

Пример

В следующем примере показан элемент Function , соответствующий хранимой процедуре UpdateOrderQuantity . Хранимая процедура принимает два параметра и не возвращает значение.

 <Function Name="UpdateOrderQuantity"
           Aggregate="false"
           BuiltIn="false"
           NiladicFunction="false"
           IsComposable="false"
           ParameterTypeSemantics="AllowImplicitConversion"
           Schema="dbo">
   <Parameter Name="orderId" Type="int" Mode="In" />
   <Parameter Name="newQuantity" Type="int" Mode="In" />
 </Function>

Элемент Key (SSDL)

Элемент Key в языке определения схемы хранилища (SSDL) представляет первичный ключ таблицы в базовой базе данных. Ключ — это дочерний элемент элемента EntityType, который представляет строку в таблице. Первичный ключ определяется в элементе Key путем ссылки на один или несколько элементов property, определенных в элементе EntityType .

Элемент Key может содержать следующие дочерние элементы (в указанном порядке):

  • PropertyRef (один или несколько)
  • Элементы Annotation

Атрибуты не применимы к элементу Key .

Пример

В следующем примере показан элемент EntityType с ключом, ссылающимся на одно свойство:

 <EntityType Name="Customers">
   <Documentation>
     <Summary>Summary here.</Summary>
     <LongDescription>Long description here.</LongDescription>
   </Documentation>
   <Key>
     <PropertyRef Name="CustomerId" />
   </Key>
   <Property Name="CustomerId" Type="int" Nullable="false" />
   <Property Name="Name" Type="nvarchar(max)" Nullable="false" />
 </EntityType>

Элемент OnDelete (SSDL)

Элемент OnDelete в языке определения схемы хранилища (SSDL) отражает поведение базы данных при удалении строки, которая участвует в ограничении внешнего ключа. Если для действия задано значение Cascade, то строки, ссылающиеся на удаленную строку, также будут удалены. Если для действия задано значение None, строки, ссылающиеся на удаленную строку, также не удаляются. Элемент OnDelete является дочерним элементом элемента End.

Элемент OnDelete может содержать следующие дочерние элементы (в указанном порядке):

  • Документация (ноль или одна)
  • Элементы заметки (ноль или больше)

Применимые атрибуты

В следующей таблице описаны атрибуты, которые можно применить к элементу OnDelete .

Имя атрибута Обязательно Значение
Действие Да Каскад или нет. (Значение Ограничение допустимо, но имеет то же поведение, что и None.)

Примечание.

Любое количество атрибутов заметки (настраиваемые XML-атрибуты) может применяться к элементу OnDelete . Однако настраиваемые атрибуты не могут принадлежать к любому пространству имен XML, зарезервированному для SSDL. Полные имена любых двух настраиваемых атрибутов не могут совпадать.

Пример

В следующем примере показан элемент Association, определяющий ограничение внешнего ключа FK_CustomerOrders. Элемент OnDelete указывает, что все строки в таблице Orders, ссылающиеся на определенную строку в таблице Customers, будут удалены, если строка в таблице Customers удаляется.

 <Association Name="FK_CustomerOrders">
   <End Role="Customers"
        Type="ExampleModel.Store.Customers" Multiplicity="1">
     <OnDelete Action="Cascade" />
   </End>
   <End Role="Orders"
        Type="ExampleModel.Store.Orders" Multiplicity="*" />
   <ReferentialConstraint>
     <Principal Role="Customers">
       <PropertyRef Name="CustomerId" />
     </Principal>
     <Dependent Role="Orders">
       <PropertyRef Name="CustomerId" />
     </Dependent>
   </ReferentialConstraint>
 </Association>

Элемент Parameter (SSDL)

Элемент Parameter в языке определения схемы хранилища (SSDL) является дочерним элементом функции, который задает параметры для хранимой процедуры в базе данных.

Элемент Parameter может содержать следующие дочерние элементы (в указанном порядке):

  • Документация (ноль или одна)
  • Элементы заметки (ноль или больше)

Применимые атрибуты

В таблице ниже описаны атрибуты, которые можно применить к элементу Parameter .

Имя атрибута Обязательно Значение
Название Да Имя параметра.
Тип Да Тип параметра.
Режим No In, Out или InOut в зависимости от того, является ли параметр входным, выходным или выходным параметром.
MaxLength No Максимальная длина параметра.
Точность No Точность параметра.
Масштаб No Масштаб параметра.
SRID No Идентификатор ссылки на пространственные системы. Допустимо только для параметров пространственных типов. Дополнительные сведения см. в статье SRID и SRID (SQL Server).

Примечание.

Любое количество атрибутов заметки (настраиваемые XML-атрибуты) может применяться к элементу Parameter . Однако настраиваемые атрибуты не могут принадлежать к любому пространству имен XML, зарезервированному для SSDL. Полные имена любых двух настраиваемых атрибутов не могут совпадать.

Пример

В следующем примере показан элемент Function с двумя элементами параметра, которые указывают входные параметры:

 <Function Name="UpdateOrderQuantity"
           Aggregate="false"
           BuiltIn="false"
           NiladicFunction="false"
           IsComposable="false"
           ParameterTypeSemantics="AllowImplicitConversion"
           Schema="dbo">
   <Parameter Name="orderId" Type="int" Mode="In" />
   <Parameter Name="newQuantity" Type="int" Mode="In" />
 </Function>

Элемент Principal (SSDL)

Основной элемент языка определения схемы хранилища (SSDL) является дочерним элементом элемента ReferentialConstraint, который определяет основной конец ограничения внешнего ключа (также называемое ограничением ссылки). Элемент Principal указывает столбец первичного ключа (или столбцы) в таблице, на которую ссылается другой столбец (или столбцы). Элементы PropertyRef указывают, на какие столбцы ссылаются. Элемент Зависимый указывает столбцы, ссылающиеся на столбцы первичного ключа, указанные в элементе Principal .

Элемент Principal может содержать следующие дочерние элементы (в указанном порядке):

  • PropertyRef (один или несколько)
  • Элементы заметки (ноль или больше)

Применимые атрибуты

В следующей таблице описаны атрибуты, которые можно применить к элементу Principal .

Имя атрибута Обязательно Значение
Роль Да То же значение, что и атрибут Role (если используется) соответствующего элемента End; в противном случае — имя таблицы, содержащей указанный столбец.

Примечание.

Любое количество атрибутов заметки (настраиваемые XML-атрибуты) может применяться к элементу Principal . Однако настраиваемые атрибуты не могут принадлежать к любому пространству имен XML, зарезервированному для CSDL. Полные имена любых двух настраиваемых атрибутов не могут совпадать.

Пример

В следующем примере показан элемент Association, использующий элемент ReferentialConstraint , чтобы указать столбцы, участвующие в ограничении внешнего ключа FK_CustomerOrders . Элемент Principal указывает столбец CustomerId таблицы Customer в качестве основного конца ограничения.

 <Association Name="FK_CustomerOrders">
   <End Role="Customers"
        Type="ExampleModel.Store.Customers" Multiplicity="1">
     <OnDelete Action="Cascade" />
   </End>
   <End Role="Orders"
        Type="ExampleModel.Store.Orders" Multiplicity="*" />
   <ReferentialConstraint>
     <Principal Role="Customers">
       <PropertyRef Name="CustomerId" />
     </Principal>
     <Dependent Role="Orders">
       <PropertyRef Name="CustomerId" />
     </Dependent>
   </ReferentialConstraint>
 </Association>

Элемент Property (SSDL)

Элемент Property в языке определения схемы хранилища (SSDL) представляет столбец таблицы в базовой базе данных. Элементы свойств являются дочерними элементами элементов EntityType, которые представляют строки в таблице. Каждый элемент Property , определенный в элементе EntityType , представляет столбец.

Элемент Property не может содержать дочерние элементы.

Применимые атрибуты

В следующей таблице описываются атрибуты, которые можно применить к элементу Property .

Имя атрибута Обязательно Значение
Название Да Имя соответствующего столбца.
Тип Да Тип соответствующего столбца.
Допускает значения NULL No True (значение по умолчанию) или False в зависимости от того, может ли соответствующий столбец иметь значение NULL.
Defaultvalue No Значение по умолчанию соответствующего столбца.
MaxLength No Максимальная длина соответствующего столбца.
FixedLength No Значение True или False в зависимости от того, будет ли соответствующее значение столбца храниться в виде строки фиксированной длины.
Точность No Точность соответствующего столбца.
Масштаб No Масштаб соответствующего столбца.
Юникод No Значение True или False в зависимости от того, будет ли соответствующее значение столбца храниться в виде строки Юникода.
Параметры сортировки No Строка, указывающая порядок сортировки, используемый в источнике данных.
SRID No Идентификатор ссылки на пространственные системы. Допустимо только для свойств пространственных типов. Дополнительные сведения см. в статье SRID и SRID (SQL Server).
StoreGeneratedPattern No Нет, удостоверение (если соответствующее значение столбца является удостоверением, созданным в базе данных), или вычисляется (если соответствующее значение столбца вычисляется в базе данных). Недопустимо для свойств RowType.

Примечание.

Любое количество атрибутов заметки (настраиваемые XML-атрибуты) может применяться к элементу Property . Однако настраиваемые атрибуты не могут принадлежать к любому пространству имен XML, зарезервированному для SSDL. Полные имена любых двух настраиваемых атрибутов не могут совпадать.

Пример

В следующем примере показан элемент EntityType с двумя дочерними элементами Property :

 <EntityType Name="Customers">
   <Documentation>
     <Summary>Summary here.</Summary>
     <LongDescription>Long description here.</LongDescription>
   </Documentation>
   <Key>
     <PropertyRef Name="CustomerId" />
   </Key>
   <Property Name="CustomerId" Type="int" Nullable="false" />
   <Property Name="Name" Type="nvarchar(max)" Nullable="false" />
 </EntityType>

Элемент PropertyRef (SSDL)

Элемент PropertyRef в языке определения схемы хранилища (SSDL) ссылается на свойство, определенное в элементе EntityType, чтобы указать, что свойство будет выполнять одну из следующих ролей:

  • Будьте частью первичного ключа таблицы, представляющей EntityType . Для определения первичного ключа можно использовать один или несколько элементов PropertyRef . Дополнительные сведения см. в разделе "Элемент Key".
  • Будет зависимым или основным элементом ссылочного ограничения. Дополнительные сведения см. в разделе "Элемент ReferentialConstraint".

Элемент PropertyRef может содержать только следующие дочерние элементы:

  • Документация (ноль или одна)
  • Элементы Annotation

Применимые атрибуты

В таблице ниже описаны атрибуты, которые можно применить к элементу PropertyRef .

Имя атрибута Обязательно Значение
Название Да Имя свойства, на которое дается ссылка.

Примечание.

Любое количество атрибутов заметки (настраиваемые XML-атрибуты) может применяться к элементу PropertyRef . Однако настраиваемые атрибуты не могут принадлежать к любому пространству имен XML, зарезервированному для CSDL. Полные имена любых двух настраиваемых атрибутов не могут совпадать.

Пример

В следующем примере показан элемент PropertyRef , используемый для определения первичного ключа путем ссылки на свойство, определенное в элементе EntityType .

 <EntityType Name="Customers">
   <Documentation>
     <Summary>Summary here.</Summary>
     <LongDescription>Long description here.</LongDescription>
   </Documentation>
   <Key>
     <PropertyRef Name="CustomerId" />
   </Key>
   <Property Name="CustomerId" Type="int" Nullable="false" />
   <Property Name="Name" Type="nvarchar(max)" Nullable="false" />
 </EntityType>

Элемент ReferentialConstraint (SSDL)

Элемент ReferentialConstraint в языке определения схемы хранилища (SSDL) представляет ограничение внешнего ключа (также называемое ограничением целостности ссылок) в базовой базе данных. Субъект и зависимые окончания ограничения задаются дочерними элементами субъекта и зависимых элементов соответственно. Столбцы, участвующие в основном и зависимых концах, ссылаются на элементы PropertyRef.

Элемент ReferentialConstraint является необязательным дочерним элементом элемента Association. Если элемент ReferentialConstraint не используется для сопоставления ограничения внешнего ключа, указанного в элементе Association, для этого необходимо использовать элемент AssociationSetMapping.

Элемент ReferentialConstraint может содержать следующие дочерние элементы:

  • Документация (ноль или одна)
  • Субъект (ровно один)
  • Зависимый (ровно один)
  • Элементы заметки (ноль или больше)

Применимые атрибуты

Любое количество атрибутов заметки (настраиваемые XML-атрибуты) может применяться к элементу ReferentialConstraint . Однако настраиваемые атрибуты не могут принадлежать к любому пространству имен XML, зарезервированному для SSDL. Полные имена любых двух настраиваемых атрибутов не могут совпадать.

Пример

В следующем примере показан элемент Association , использующий элемент ReferentialConstraint , чтобы указать столбцы, участвующие в ограничении внешнего ключа FK_CustomerOrders :

 <Association Name="FK_CustomerOrders">
   <End Role="Customers"
        Type="ExampleModel.Store.Customers" Multiplicity="1">
     <OnDelete Action="Cascade" />
   </End>
   <End Role="Orders"
        Type="ExampleModel.Store.Orders" Multiplicity="*" />
   <ReferentialConstraint>
     <Principal Role="Customers">
       <PropertyRef Name="CustomerId" />
     </Principal>
     <Dependent Role="Orders">
       <PropertyRef Name="CustomerId" />
     </Dependent>
   </ReferentialConstraint>
 </Association>

Элемент ReturnType (SSDL)

Элемент ReturnType в языке определения схемы хранилища (SSDL) задает тип возврата для функции, определенной в элементе Function . Возвращаемый тип функции также можно указать атрибутом ReturnType .

Возвращаемый тип функции указывается атрибутом Type или элементом ReturnType.

Элемент ReturnType может содержать следующие дочерние элементы:

  • CollectionType (один)

Примечание.

Любое количество атрибутов заметки (настраиваемые атрибуты XML) может применяться к элементу ReturnType . Однако настраиваемые атрибуты не могут принадлежать к любому пространству имен XML, зарезервированному для SSDL. Полные имена любых двух настраиваемых атрибутов не могут совпадать.

Пример

В следующем примере используется функция , которая возвращает коллекцию строк.

   <Function Name="GetProducts" IsComposable="true" Schema="dbo">
     <ReturnType>
       <CollectionType>
         <RowType>
           <Property Name="ProductID" Type="int" Nullable="false" />
           <Property Name="CategoryID" Type="bigint" Nullable="false" />
           <Property Name="ProductName" Type="nvarchar" MaxLength="40" Nullable="false" />
           <Property Name="UnitPrice" Type="money" />
           <Property Name="Discontinued" Type="bit" />
         </RowType>
       </CollectionType>
     </ReturnType>
   </Function>

Элемент RowType (SSDL)

Элемент RowType в языке определения схемы хранилища (SSDL) определяет неименованную структуру в качестве возвращаемого типа для функции, определенной в хранилище.

Элемент RowType — это дочерний элемент элемента CollectionType:

Элемент RowType может содержать следующие дочерние элементы:

  • Свойство (один или несколько)

Пример

В следующем примере показана функция хранилища, использующая элемент CollectionType, чтобы указать, что функция возвращает коллекцию строк (как указано в элементе RowType).

   <Function Name="GetProducts" IsComposable="true" Schema="dbo">
     <ReturnType>
       <CollectionType>
         <RowType>
           <Property Name="ProductID" Type="int" Nullable="false" />
           <Property Name="CategoryID" Type="bigint" Nullable="false" />
           <Property Name="ProductName" Type="nvarchar" MaxLength="40" Nullable="false" />
           <Property Name="UnitPrice" Type="money" />
           <Property Name="Discontinued" Type="bit" />
         </RowType>
       </CollectionType>
     </ReturnType>
   </Function>

Элемент Schema (SSDL)

Элемент Schema в языке определения схемы хранилища (SSDL) является корневым элементом определения модели хранения. Он содержит определения объектов, функций и контейнеров, из которых состоит модель хранения.

Элемент Schema может содержать ноль или более следующих дочерних элементов:

  • Связь
  • EntityType
  • EntityContainer
  • Функция

Элемент Schema использует атрибут пространства имен для определения пространства имен для объектов типа сущности и ассоциаций в модели хранения. В пространстве имен не может быть двух объектов с одинаковым именем.

Пространство имен модели хранения отличается от пространства имен XML элемента Schema . Пространство имен модели хранилища (как определено атрибутом пространства имен) — это логический контейнер для типов сущностей и типов ассоциаций. Пространство имен XML (указанное атрибутом xmlns ) элемента Schema — это пространство имен по умолчанию для дочерних элементов и атрибутов элемента Schema . Пространства имен XML формы https://schemas.microsoft.com/ado/YYYY/MM/edm/ssdl (где ггГГ и ММ представляют год и месяц соответственно) зарезервированы для SSDL. Пользовательские элементы и атрибуты не могут присутствовать в пространствах имен такого вида.

Применимые атрибуты

В таблице ниже описаны атрибуты, которые можно применить к элементу Schema .

Имя атрибута Обязательно Значение
Пространство имен Да Пространство имен модели хранения. Значение атрибута пространства имен используется для формирования полного имени типа. Например, если объект EntityType с именем Customer находится в пространстве имен ExampleModel.Store, полное имя EntityType — ExampleModel.Store.Customer.
Следующие строки нельзя использовать в качестве значения атрибута пространства имен: System, Transient или Edm. Значение атрибута пространства имен не может совпадать со значением атрибута пространства имен в элементе схемы CSDL.
Alias No Идентификатор, используемый в качестве имени пространства имен. Например, если entityType с именем Customer находится в пространстве имен ExampleModel.Store, а значение атрибута Aliasслужба хранилища Model, можно использовать служба хранилища Model.Customer в качестве полного имени EntityType.
Поставщик Да Поставщик данных.
ProviderManifestToken Да Маркер, который указывает поставщику, какой манифест должен быть возвращен. Формат маркера не определен. Значения для маркера определяются поставщиком. Сведения о маркерах манифеста поставщика SQL Server см. в разделе SqlClient для Entity Framework.

Пример

В следующем примере показан элемент Schema , содержащий элемент EntityContainer , два элемента EntityType и один элемент Association .

 <Schema Namespace="ExampleModel.Store"
       Alias="Self" Provider="System.Data.SqlClient"
       ProviderManifestToken="2008"
       xmlns="https://schemas.microsoft.com/ado/2009/11/edm/ssdl">
   <EntityContainer Name="ExampleModelStoreContainer">
     <EntitySet Name="Customers"
                EntityType="ExampleModel.Store.Customers"
                Schema="dbo" />
     <EntitySet Name="Orders"
                EntityType="ExampleModel.Store.Orders"
                Schema="dbo" />
     <AssociationSet Name="FK_CustomerOrders"
                     Association="ExampleModel.Store.FK_CustomerOrders">
       <End Role="Customers" EntitySet="Customers" />
       <End Role="Orders" EntitySet="Orders" />
     </AssociationSet>
   </EntityContainer>
   <EntityType Name="Customers">
     <Documentation>
       <Summary>Summary here.</Summary>
       <LongDescription>Long description here.</LongDescription>
     </Documentation>
     <Key>
       <PropertyRef Name="CustomerId" />
     </Key>
     <Property Name="CustomerId" Type="int" Nullable="false" />
     <Property Name="Name" Type="nvarchar(max)" Nullable="false" />
   </EntityType>
   <EntityType Name="Orders" xmlns:c="http://CustomNamespace">
     <Key>
       <PropertyRef Name="OrderId" />
     </Key>
     <Property Name="OrderId" Type="int" Nullable="false"
               c:CustomAttribute="someValue"/>
     <Property Name="ProductId" Type="int" Nullable="false" />
     <Property Name="Quantity" Type="int" Nullable="false" />
     <Property Name="CustomerId" Type="int" Nullable="false" />
     <c:CustomElement>
       Custom data here.
     </c:CustomElement>
   </EntityType>
   <Association Name="FK_CustomerOrders">
     <End Role="Customers"
          Type="ExampleModel.Store.Customers" Multiplicity="1">
       <OnDelete Action="Cascade" />
     </End>
     <End Role="Orders"
          Type="ExampleModel.Store.Orders" Multiplicity="*" />
     <ReferentialConstraint>
       <Principal Role="Customers">
         <PropertyRef Name="CustomerId" />
       </Principal>
       <Dependent Role="Orders">
         <PropertyRef Name="CustomerId" />
       </Dependent>
     </ReferentialConstraint>
   </Association>
   <Function Name="UpdateOrderQuantity"
             Aggregate="false"
             BuiltIn="false"
             NiladicFunction="false"
             IsComposable="false"
             ParameterTypeSemantics="AllowImplicitConversion"
             Schema="dbo">
     <Parameter Name="orderId" Type="int" Mode="In" />
     <Parameter Name="newQuantity" Type="int" Mode="In" />
   </Function>
   <Function Name="UpdateProductInOrder" IsComposable="false">
     <CommandText>
       UPDATE Orders
       SET ProductId = @productId
       WHERE OrderId = @orderId;
     </CommandText>
     <Parameter Name="productId"
                Mode="In"
                Type="int"/>
     <Parameter Name="orderId"
                Mode="In"
                Type="int"/>
   </Function>
 </Schema>

Атрибуты примечаний

Атрибуты annotation в языке SSDL представляют собой настраиваемые атрибуты XML в модели хранения, которые содержат дополнительные метаданные об элементах в модели хранения. Атрибуты annotation должны не только иметь допустимую структуру XML, но и соответствовать следующим ограничениям.

  • Атрибуты annotation не должны находиться ни в одном пространстве имен XML, которое зарезервировано для языка SSDL.
  • Полные имена любых двух атрибутов annotation не должны совпадать.

К данному конкретному элементу языка SSDL может применяться несколько атрибутов annotation. Метаданные, содержащиеся в элементах заметки, можно получить во время выполнения с помощью классов в пространстве имен System.Data.Metadata.Edm.

Пример

В следующем примере показан элемент EntityType с атрибутом заметки, примененным к свойству OrderId . В примере также показан элемент заметки, добавленный в элемент EntityType .

 <EntityType Name="Orders" xmlns:c="http://CustomNamespace">
   <Key>
     <PropertyRef Name="OrderId" />
   </Key>
   <Property Name="OrderId" Type="int" Nullable="false"
             c:CustomAttribute="someValue"/>
   <Property Name="ProductId" Type="int" Nullable="false" />
   <Property Name="Quantity" Type="int" Nullable="false" />
   <Property Name="CustomerId" Type="int" Nullable="false" />
   <c:CustomElement>
     Custom data here.
   </c:CustomElement>
 </EntityType>

Элементы Annotation (SSDL)

Элементы annotation в языке SSDL представляют собой настраиваемые элементы XML в модели хранения, которые содержат дополнительные метаданные о модели хранения. Элементы annotation должны не только иметь верную структуру XML, но и соответствовать следующим ограничениям.

  • Элементы annotation не должны находиться в каком-либо пространстве имен XML, которое зарезервировано для языка SSDL.
  • Полные имена любых двух элементов annotation не должны совпадать.
  • Элементы annotation должны находиться после всех остальных дочерних элементов в данном элементе SSDL.

У данного элемента языка SSDL может быть больше одного дочернего элемента annotation. Начиная с платформа .NET Framework версии 4 метаданные, содержащиеся в элементах заметки, можно получить доступ во время выполнения с помощью классов в пространстве имен System.Data.Metadata.Edm.

Пример

В следующем примере показан элемент EntityType с элементом заметки (CustomElement). В примере также показан атрибут заметки, применяемый к свойству OrderId .

 <EntityType Name="Orders" xmlns:c="http://CustomNamespace">
   <Key>
     <PropertyRef Name="OrderId" />
   </Key>
   <Property Name="OrderId" Type="int" Nullable="false"
             c:CustomAttribute="someValue"/>
   <Property Name="ProductId" Type="int" Nullable="false" />
   <Property Name="Quantity" Type="int" Nullable="false" />
   <Property Name="CustomerId" Type="int" Nullable="false" />
   <c:CustomElement>
     Custom data here.
   </c:CustomElement>
 </EntityType>

Аспекты (модель SSDL)

Аспекты в языке определения схемы хранилища (SSDL) представляют ограничения для типов столбцов, указанных в элементах свойств. Аспекты реализуются как XML-атрибуты для элементов property .

В следующей таблице описываются аспекты, поддерживаемые в SSDL.

Аспект Description
Параметры сортировки Задает последовательность сортировки, которая будет использоваться при выполнении операций сравнения и упорядочивания для значений свойств.
FixedLength Указывает, может ли изменяться длина значения столбца.
MaxLength Указывает максимальную длину значения столбца.
Точность Для свойств типа Decimal указывает число цифр, которые могут иметь значение свойства. Для свойств типа Time, DateTime и DateTimeOffset указывает количество цифр для дробной части секунд значения столбца.
Масштаб Задает число цифр справа от десятичной запятой в значении столбца.
Юникод Указывает, будет ли значение столбца храниться в Юникоде.