Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Примечание.
SSDL версии 1 не поддерживается, обновите до версии 3
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) задает столбцы таблицы, участвующие в ограничении внешнего ключа в базовой базе данных. Два обязательных дочерних элемента типа End указывают таблицы в концевых точках ассоциации и кратность в каждой точке. Необязательный элемент 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 , который принимает определенный набор параметров, а затем вызывает хранимую процедуру с другим набором параметров, например хранимую процедуру, которая удаляет данные.
Зависимый элемент (SSDL)
Зависимый элемент в языке определения схемы хранилища (SSDL) является дочерним элементом элемента ReferentialConstraint, который определяет зависимый конец ограничения внешнего ключа (также называемое ограничением ссылки). Элемент Зависимый указывает столбец (или столбцы) в таблице, ссылающейся на первичный ключевой столбец (или столбцы). Элементы PropertyRef указывают, на какие столбцы ссылаются. Элемент Principal указывает столбцы первичного ключа, на которые ссылаются столбцы, указанные в элементе Зависимый.
Элемент Зависимый может содержать следующие дочерние элементы (в указанном порядке):
- PropertyRef (один или несколько)
- Элементы заметки (ноль или больше)
Применимые атрибуты
В следующей таблице описаны атрибуты, которые можно применить к зависимому элементу.
| Имя атрибута | является обязательным | Значение |
|---|---|---|
| Роль | Да | То же значение, что и атрибут Role (если используется) соответствующего элемента End; в противном случае — имя таблицы, содержащей столбец ссылки. |
Примечание.
Любое количество атрибутов аннотации (настраиваемых XML-атрибутов) может применяться к элементу Dependent. Однако настраиваемые атрибуты не могут принадлежать к любому пространству имен 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>
Элемент "Документация" (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>
Элемент завершения (SSDL)
Элемент End в языке определения схемы хранилища (SSDL) указывает таблицу и количество строк на одном конце ограничения внешнего ключа в соответствующей базе данных. Элемент End может быть дочерним элементом элемента Association или элементом AssociationSet. В каждом случае дочерние элементы и применимые атрибуты различаются.
Элемент End как дочерний по отношению к элементу Association
Элемент End (в качестве дочернего элемента Association) указывает таблицу и количество строк для ограничения внешнего ключа с атрибутами Type и Multiplicity соответственно. Концы ограничения внешнего ключа определяются как часть ассоциации SSDL; ассоциация SSDL должна иметь ровно два конца.
Элемент End может содержать следующие дочерние элементы (в указанном порядке):
- Документация (ноль или один элемент)
- OnDelete (ноль или один элемент)
- Элементы заметки (ноль или больше элементов)
Применимые атрибуты
В следующей таблице описываются атрибуты, которые можно применять к элементу End , когда он является дочерним элементом элемента Association .
| Имя атрибута | является обязательным | Значение |
|---|---|---|
| Тип | Да | Полное имя набора сущностей SSDL, который находится в конце ограничения внешнего ключа. |
| Роль | Нет | Значение атрибута 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, который находится в конце ограничения внешнего ключа. |
| Роль | Нет | Значение одного из атрибутов 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
- Элементы аннотации
Применимые атрибуты
В таблице ниже описаны атрибуты, которые можно применить к элементу 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 (ноль или один элемент)
- Элементы аннотации
Применимые атрибуты
В следующей таблице описываются атрибуты, которые можно применить к элементу EntitySet .
Примечание.
Некоторые атрибуты (не перечисленные здесь) могут быть определены с помощью псевдонима store. Эти атрибуты используются Мастером обновления модели при обновлении модели.
| Имя атрибута | является обязательным | Значение |
|---|---|---|
| Имя | Да | Имя набора сущностей. |
| EntityType | Да | Полное имя типа сущности, для которого набор сущностей содержит экземпляры. |
| Схема | Нет | Схема базы данных. |
| Таблица | Нет | Таблица базы данных. |
Примечание.
Любое количество атрибутов заметки (настраиваемые 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 может содержать следующие дочерние элементы (в указанном порядке):
- Документация (ноль или один элемент)
- Ключ (ноль или один элемент)
- Элементы аннотации
Применимые атрибуты
В таблице ниже описаны атрибуты, которые можно применить к элементу 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>
Элемент Функция (SSDL)
Элемент Function в языке определения схемы хранилища (SSDL) задает хранимую процедуру, которая существует в базовой базе данных.
Элемент Function может содержать следующие дочерние элементы (в указанном порядке):
- Документация (ноль или одна)
- Параметр (ноль или больше)
- CommandText (ноль или один)
- ТипВозврата (от нуля и более)
- Элементы заметки (ноль или больше)
Возвращаемый тип функции должен быть указан с элементом ReturnType или атрибутом ReturnType (см. ниже), но не с обоими.
Хранимая процедура, указанная в модели хранения, может быть импортирована в концептуальную модель приложения. Дополнительные сведения см. в разделе "Запросы с помощью хранимых процедур". Элемент Function также можно использовать для определения пользовательских функций в модели хранения.
Применимые атрибуты
В следующей таблице описываются атрибуты, которые можно применить к элементу Function .
Примечание.
Некоторые атрибуты (не перечисленные здесь) могут быть определены с помощью псевдонима store. Эти атрибуты используются Мастером обновления модели при обновлении модели.
| Имя атрибута | является обязательным | Значение |
|---|---|---|
| Имя | Да | Имя хранимой процедуры. |
| ReturnType | Нет | Возвращаемый тип хранимой процедуры. |
| Агрегат | Нет | True, если хранимая процедура возвращает агрегатное значение; в противном случае False. |
| BuiltIn | Нет | Значение True , если функция является встроеннойфункцией 1 ; в противном случае — false. |
| StoreFunctionName | Нет | Имя хранимой процедуры. |
| NiladicFunction | Нет | True, если функция является ниладической функцией; False в противном случае. |
| IsComposable | Нет | true, если функция является композируемой3 функцией; false в противном случае. |
| ParameterTypeSemantics | Нет | Перечисление, определяющее семантику типа, которая используется для разрешения перегрузок функций. Перечисление задается в манифесте поставщика в соответствии с определением функции. Значением по умолчанию является AllowImplicitConversion. |
| Схема | Нет | Имя схемы, в которой определена хранимая процедура. |
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>
Ключевой элемент (SSDL)
Элемент Key в языке определения схемы хранилища (SSDL) представляет первичный ключ таблицы в базовой базе данных. Ключ — это дочерний элемент элемента EntityType, который представляет строку в таблице. Первичный ключ определяется в элементе Key путем ссылки на один или несколько элементов property, определенных в элементе EntityType .
Элемент Key может содержать следующие дочерние элементы (в указанном порядке):
- PropertyRef (один или несколько)
- Элементы аннотации
Атрибуты не применимы к элементу 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 .
| Имя атрибута | является обязательным | Значение |
|---|---|---|
| Имя | Да | Имя параметра. |
| Тип | Да | Тип параметра. |
| Режим | Нет | In, Out или InOut в зависимости от того, является ли параметр входным, выходным или выходным параметром. |
| MaxLength | Нет | Максимальная длина параметра. |
| Точность | Нет | Точность параметра. |
| Масштабировать | Нет | Масштаб параметра. |
| SRID | Нет | Идентификатор пространственной системы. Допустимо только для параметров пространственных типов. Дополнительные сведения см. в статье 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>
Основной элемент (SSDL)
Элемент Principal в языке определения схемы хранилища (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 .
| Имя атрибута | является обязательным | Значение |
|---|---|---|
| Имя | Да | Имя соответствующего столбца. |
| Тип | Да | Тип соответствующего столбца. |
| Nullable | Нет | True (значение по умолчанию) или False в зависимости от того, может ли соответствующий столбец иметь значение NULL. |
| DefaultValue | Нет | Значение по умолчанию соответствующего столбца. |
| MaxLength | Нет | Максимальная длина соответствующего столбца. |
| FixedLength | Нет | True или False в зависимости от того, будет ли соответствующее значение в столбце храниться как строка фиксированной длины. |
| Точность | Нет | Точность соответствующего столбца. |
| Масштабировать | Нет | Масштаб соответствующего столбца. |
| Юникод | Нет | True или False в зависимости от того, будет ли соответствующее значение столбца храниться как строка Юникода. |
| Колляция | Нет | Строка, указывающая порядок сортировки, используемый в источнике данных. |
| SRID | Нет | Идентификатор пространственной системы. Допустимо только для свойств пространственных типов. Дополнительные сведения см. в статье SRID и SRID (SQL Server). |
| StoreGeneratedPattern | Нет | Нет, удостоверение (если соответствующее значение столбца является удостоверением, созданным в базе данных), или вычисляется (если соответствующее значение столбца вычисляется в базе данных). Недопустимо для свойств 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 . Для получения дополнительной информации см. "Ключевой элемент".
- Быть зависимым или основным концом ссылочного ограничения. Дополнительные сведения см. в разделе "Элемент ReferentialConstraint".
Элемент PropertyRef может содержать только следующие дочерние элементы:
- Документация (ноль или одна)
- Элементы аннотации
Применимые атрибуты
В таблице ниже описаны атрибуты, которые можно применить к элементу 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 может содержать ноль или более следующих дочерних элементов:
- Ассоциация
- ТипСущности
- EntityContainer
- Функция
Элемент Schema использует атрибут Namespace для определения пространства имен для объектов типа сущности и ассоциаций в модели хранения. В пространстве имен не может быть двух объектов с одинаковым именем.
Пространство имен модели хранения отличается от пространства имен XML элемента Schema . Пространство имен модели хранилища (как определено атрибутом Namespace) — это логический контейнер для типов сущностей и типов ассоциаций. Пространство имен XML (указанное атрибутом xmlns ) элемента Schema — это пространство имен по умолчанию для дочерних элементов и атрибутов элемента Schema . Пространства имен XML формы https://schemas.microsoft.com/ado/YYYY/MM/edm/ssdl (где ггГГ и ММ представляют год и месяц соответственно) зарезервированы для SSDL. Пользовательские элементы и атрибуты не могут присутствовать в пространствах имен такого вида.
Применимые атрибуты
В таблице ниже описаны атрибуты, которые можно применить к элементу Schema .
| Имя атрибута | является обязательным | Значение |
|---|---|---|
| Пространство имен | Да | Пространство имен модели хранения. Значение атрибута Namespace используется для формирования полного имени типа. Например, если объект EntityType с именем Customer находится в пространстве имен ExampleModel.Store, полное имя EntityType — ExampleModel.Store.Customer. Следующие строки нельзя использовать в качестве значения атрибута Namespace: System, Transient или Edm. Значение атрибута Namespace не может совпадать со значением атрибута Namespace в элементе схемы CSDL. |
| Alias | Нет | Идентификатор, используемый в качестве имени пространства имен. Например, если тип сущности с именем Customer находится в пространстве имен ExampleModel.Store, а значение атрибута Alias — StorageModel, то можно использовать StorageModel.Customer в качестве полного имени этого типа сущности . |
| Поставщик | Да | Поставщик данных. |
| 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.
- Полные имена двух атрибутов аннотаций не должны совпадать.
К элементу SSDL может быть применено несколько атрибутов аннотации. Метаданные, содержащиеся в элементах заметки, можно получить во время выполнения с помощью классов в пространстве имен 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>
Элементы аннотации (SSDL)
Элементы annotation в языке SSDL представляют собой настраиваемые элементы XML в модели хранения, которые содержат дополнительные метаданные о модели хранения. Элементы annotation должны не только иметь верную структуру XML, но и соответствовать следующим ограничениям.
- Элементы annotation не должны находиться в каком-либо пространстве имен XML, которое зарезервировано для языка SSDL.
- Полностью квалифицированные имена любых двух элементов аннотации не должны совпадать.
- Элементы аннотации должны следовать за всеми остальными дочерними элементами данного элемента SSDL.
У элемента SSDL может быть больше одного дочернего элемента аннотации. Начиная с платформы .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) представляют ограничения для типов столбцов, указанных в элементах Property. Аспекты реализуются как XML-атрибуты на элементах Property.
В следующей таблице описываются аспекты, поддерживаемые в SSDL.
| Аспект | Описание |
|---|---|
| Колляция | Задает последовательность сортировки, которая будет использоваться при выполнении операций сравнения и упорядочивания для значений свойств. |
| FixedLength | Указывает, может ли изменяться длина значения столбца. |
| MaxLength | Указывает максимальную длину значения столбца. |
| Точность | Для свойств типа Decimal указывает число цифр, которые могут иметь значение свойства. Для свойств типа Time, DateTime и DateTimeOffset указывает количество цифр для дробной части секунд значения столбца. |
| Масштабировать | Задает число цифр справа от десятичной запятой в значении столбца. |
| Юникод | Указывает, будет ли значение столбца храниться в Юникоде. |