Элемент Schema (CSDL)

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

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

Элемент Schema может содержать ноль или один элемент Annotation.

Bb399276.note(ru-ru,VS.100).gifПримечание
Элементы Function и Annotation допускаются только в концептуальных моделях для приложений, которые предназначены для версии .NET Framework 4 или более поздней.Пространством имен XML для таких моделей является https://schemas.microsoft.com/ado/2008/09/edm.

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

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

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

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

Имя атрибута Необходимо Значение

Namespace

Да

Пространство имен концептуальной модели. Значение атрибута Namespace используется для создания полного имени типа. Например, если элемент EntityType с именем Customer находится в пространстве имен Simple.Example.Model, полным именем элемента EntityType будет SimpleExampleModel.Customer.

Следующие строки не могут быть использованы в качестве значений для атрибута Namespace: System, Transient или Edm. Значение для атрибута Namespace не может быть таким же, как значение атрибута Namespace в элементе Schema языка SSDL.

Alias

Нет

Идентификатор, используемый в качестве имени пространства имен. Например, если элемент EntityType с именем Customer находится в пространстве имен Simple.Example.Model, а значением атрибута Alias является Model, то в качестве полного имени для EntityType. можно указать Model.Customer.

Bb399276.note(ru-ru,VS.100).gifПримечание
К элементу Schema может быть применено любое количество атрибутов annotation (настраиваемых атрибутов XML).Однако настраиваемые атрибуты не могут принадлежать к любому пространству имен XML, зарезервированному для CSDL.Полные имена любых двух настраиваемых атрибутов не могут совпадать.

Пример

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

<Schema xmlns="https://schemas.microsoft.com/ado/2008/09/edm" 
     xmlns:cg="https://schemas.microsoft.com/ado/2006/04/codegeneration"
     xmlns:store="https://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" 
      Namespace="ExampleModel" Alias="Self">
        <EntityContainer Name="ExampleModelContainer">
          <EntitySet Name="Customers" 
                     EntityType="ExampleModel.Customer" />
          <EntitySet Name="Orders" EntityType="ExampleModel.Order" />
          <AssociationSet 
                      Name="CustomerOrder" 
                      Association="ExampleModel.CustomerOrders">
            <End Role="Customer" EntitySet="Customers" />
            <End Role="Order" EntitySet="Orders" />
          </AssociationSet>
        </EntityContainer>
        <EntityType Name="Customer">
          <Key>
            <PropertyRef Name="CustomerId" />
          </Key>
          <Property Type="Int32" Name="CustomerId" Nullable="false" />
          <Property Type="String" Name="Name" Nullable="false" />
          <NavigationProperty 
                   Name="Orders" 
                   Relationship="ExampleModel.CustomerOrders" 
                   FromRole="Customer" ToRole="Order" />
        </EntityType>
        <EntityType Name="Order">
          <Key>
            <PropertyRef Name="OrderId" />
          </Key>
          <Property Type="Int32" Name="OrderId" Nullable="false" />
          <Property Type="Int32" Name="ProductId" Nullable="false" />
          <Property Type="Int32" Name="Quantity" Nullable="false" />
          <NavigationProperty 
                   Name="Customer" 
                   Relationship="ExampleModel.CustomerOrders" 
                   FromRole="Order" ToRole="Customer" />
          <Property Type="Int32" Name="CustomerId" Nullable="false" />
        </EntityType>
        <Association Name="CustomerOrders">
          <End Type="ExampleModel.Customer" 
               Role="Customer" Multiplicity="1" />
          <End Type="ExampleModel.Order" 
               Role="Order" Multiplicity="*" />
          <ReferentialConstraint>
            <Principal Role="Customer">
              <PropertyRef Name="CustomerId" />
            </Principal>
            <Dependent Role="Order">
              <PropertyRef Name="CustomerId" />
            </Dependent>
          </ReferentialConstraint>
        </Association>
      </Schema>

См. также

Основные понятия

Общие сведения о платформе Entity Framework
Спецификация языка CSDL

Другие ресурсы

Спецификации языка CSDL, SSDL и MSL
ADO.NET Entity Data Model Tools