Элемент Schema (SSDL)

Элемент 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