Поделиться через


Контейнеры сущностей (модель EDM)

В модели Entity Data Model (EDM) элемент EntityContainer представляет собой логическое группирование наборов сущностей и наборов ассоциаций. Эта модель программирования построена на основе CSDL-схемы, поэтому элемент EntityContainer является спецификацией для пространства имен в определяемой модели объектов. В SSDL-схеме элемент EntityContainer идентифицирует контейнер хранилища, в котором сохраняются данные для приложений, построенных на основе модели. Это может быть база данных в системе управления реляционными базами данных или другая технология.

Элемент EntityContainer управляет областью определения сущностей и связей. Все типы в модели EDM определены в области пространства имен EntityContainer. Экземпляры EntitySet и AssociationSet создаются в области пространства имен EntityContainer. Аналогичным образом экземпляры EntityType или Association создаются в области набора EntitySet или AssociationSet.

В иерархии XML элемент EntityContainer отделен от элемента Schema, несмотря на то что элемент EntityContainer определен в схеме. Это важно при сопоставлении контейнера EntityContainer с хранилищем. В файле сопоставления полное имя элемента EntityContainer не включает имени пространства имен схемы.

Элемент EntityContainer является производным от основной конструкции EntityContainer, предоставленной моделью EDM. Элемент EntityContainer определяет типы, производные от наборов EntitySet и AssociationSet.

Набор EntitySet, определенный в контейнере EntityContainer, может содержать элемент EntityType, определенный в отдельном контейнере EntityContainer.

Набор AssociationSet не может ссылаться на набор EntitySet, определенный в отдельном контейнере EntityContainer.

В следующем примере показаны декларации двух типов сущностей и типа ассоциации, а затем декларация контейнера EntityContainer с двумя наборами сущностей и набором ассоциаций.

Следующая схема содержит декларации сущностей:

<?xml version="1.0" encoding="utf-8"?>
<Schema xmlns:cg="https://schemas.microsoft.com/ado/2006/04/codegeneration"
    xmlns:edm="https://schemas.microsoft.com/ado/2006/04/edm"
    xmlns="https://schemas.microsoft.com/ado/2006/04/edm"
    Namespace="MyCompany.EntityTypes" Alias="Self">

    <EntityType Name="Order">
        <Key>
            <PropertyRef Name="OrderId" />
        </Key>
        <Property Name="OrderId" Type="String" />
        <!--Other Properties-->
    </EntityType>

    <EntityType Name="Customer">
        <Key>
            <PropertyRef Name="CustomerId" />
        </Key>
        <Property Name="CustomerId" Type="String" />
        <!--Other Properties-->
    </EntityType>

</Schema>

Следующая схема содержит декларации ассоциаций:

<?xml version="1.0" encoding="utf-8"?>
<Schema xmlns:cg="https://schemas.microsoft.com/ado/2006/04/codegeneration"
    xmlns:edm="https://schemas.microsoft.com/ado/2006/04/edm"
    xmlns="https://schemas.microsoft.com/ado/2006/04/edm"
    Namespace="MyCompany.RelationshipTypes">

    <Using Namespace="MyCompany.EntityTypes" Alias="basicTypes"/>

    <Association Name="CustomerOrder">
        <End Type="basicTypes.Customer" Multiplicity="1" />
        <End Type="basicTypes.Order" Multiplicity="*" />
    </Association>
</Schema>

Следующая схема содержит декларацию контейнера сущностей:

<?xml version="1.0" encoding="utf-8"?>
<Schema xmlns:cg="https://schemas.microsoft.com/ado/2006/04/codegeneration"
    xmlns:edm="https://schemas.microsoft.com/ado/2006/04/edm"
    xmlns="https://schemas.microsoft.com/ado/2006/04/edm"
    Namespace="MyCompany.ContainerType">

    <EntityContainer name="ContainerOne">
        <Using Namespace="MyCompany.EntityTypes" Alias="basicTypes"/>
        <Using Namespace="MyCompany.RelationshipTypes" Alias="relnTypes"/>

        <EntitySet Name="CustomerSet" EntityType="basicTypes.Customer"/>
        <EntitySet Name="OrderSet" EntityType="basicTypes.Order"/>

        <AssociationSet Name="CustomerOrderSet" Association="relnTypes.CustomerOrder">
            <End EntitySet="CustomerSet" Role="Orders"/>
            <End EntitySet="OrderSet" Role="OrderedBy"/>
        </AssociationSet>
    </EntityContainer>
</Schema>

См. также

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

Элемент Association (модель EDM)

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

Спецификация схем и сопоставлений (платформа Entity Framework)