Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Элемент Schema языка SSDL является корневым элементом определения модели хранения. Он содержит определения объектов, функций и контейнеров, из которых состоит модель хранения.
Элемент Schema может иметь ноль или более следующих дочерних элементов:
В элементе Schema атрибут Namespace определяет пространство имен для типа сущности и объектов сопоставления в модели хранения. В пространстве имен не может быть двух объектов с одинаковым именем.
Пространство имен модели хранения отличается от пространства имен XML элемента Schema. Пространство имен модели хранения, определяемое атрибутом Namespace, является логическим контейнером типов сущностей и типов ассоциаций. Пространство имен XML (определяемое атрибутом xmlns) элемента Schema является пространством имен по умолчанию для дочерних элементов и атрибутов элемента Schema. Пространства имен XML вида https://schemas.microsoft.com/ado/YYYY/MM/edm/ssdl (где YYYY и MM — год и месяц соответственно) зарезервированы для SSDL. Пользовательские элементы и атрибуты не могут присутствовать в пространствах имен такого вида.
Применимые атрибуты
В следующей таблице описываются атрибуты, которые можно применить к элементу Schema.
Имя атрибута | Необходимо | Значение |
---|---|---|
Namespace |
Да |
Пространство имен модели хранения. Значение атрибута Namespace используется для создания полного имени типа. Например, если элемент EntityType с именем Customer находится в пространстве имен ExampleModel.Store, то полным именем элемента EntityType будет ExampleModel.Store.Customer. Следующие строки не могут быть использованы в качестве значений для атрибута Namespace: System, Transient или Edm. Значение для атрибута Namespace не может быть таким же, как значение атрибута Namespace в элементе Schema языка CSDL. |
Alias |
Нет |
Идентификатор, используемый в качестве имени пространства имен. Например, если элемент EntityType с именем Customer находится в пространстве имен ExampleModel.Store, а атрибут Alias имеет значение StorageModel, то в качестве полного имени для EntityType. можно указать StorageModel.Customer. |
Provider |
Да |
Поставщик данных. Дополнительные сведения см. в разделе Поставщики данных платформы Entity Framework. |
ProviderManifestToken |
Да |
Маркер, который указывает поставщику, какой манифест должен быть возвращен. Формат маркера не определен. Значения для маркера определяются поставщиком. Сведения о маркерах манифеста поставщика SQL Server см. в разделе Поставщик данных .NET Framework для 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/02/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>
См. также
Основные понятия
Общие сведения о платформе Entity Framework
Спецификация языка SSDL
Другие ресурсы
Спецификации языка CSDL, SSDL и MSL
ADO.NET Entity Data Model Tools