Элемент Schema (CSDL)
Элемент Schema является корневым элементом определения концептуальной модели. Он содержит определения объектов, функций и контейнеров, из которых состоит концептуальная модель.
Элемент Schema может иметь ноль или более следующих дочерних элементов:
Элемент Schema может содержать ноль или один элемент Annotation.
Примечание |
---|
Элементы 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. |
Примечание |
---|
К элементу 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