набор сущностейentity set

Набор сущностей — это логический контейнер для экземпляров типа сущности и экземпляров любого типа, производного от этого типа сущности.An entity set is a logical container for instances of an entity type and instances of any type derived from that entity type. (Дополнительные сведения о производных типах см. в разделе EDM: наследование.) Связь между типом сущности и набором сущностей аналогична связи между строкой и таблицей в реляционной базе данных: как строка, тип сущности Описывает структуру данных, и, как и таблица, набор сущностей содержит экземпляры данной структуры.(For information about derived types, see Entity Data Model: Inheritance.) The relationship between an entity type and an entity set is analogous to the relationship between a row and a table in a relational database: Like a row, an entity type describes data structure, and, like a table, an entity set contains instances of a given structure. Набор сущностей не является конструктом моделирования данных; он не описывает структуру данных.An entity set is not a data modeling construct; it does not describe the structure of data. Вместо этого набор сущностей обеспечивает конструкт для среды размещения или хранения (например, для среды CLR или базы данных сервера SQL), позволяя группировать экземпляры типа сущности так, чтобы они были сопоставлены хранилищу данных.Instead, an entity set provides a construct for a hosting or storage environment (such as the common language runtime or a SQL Server database) to group entity type instances so that they can be mapped to a data store.

Набор сущностей определяется в контейнере сущностей, который является логической группировкой наборов сущностей и наборов ассоциаций.An entity set is defined within an entity container, which is a logical grouping of entity sets and association sets.

Чтобы экземпляр типа сущности существовал в наборе сущности, должны быть выполнены следующие условия.For an entity type instance to exist in an entity set, the following must be true:

  • Тип экземпляра является либо тем же, что и тип сущности, в котором находится набор сущностей, либо подтипом типа сущности.The type of the instance is either the same as the entity type on which the entity set is based, or the type of the instance is a subtype of the entity type.

  • Ключ сущности для экземпляра уникален в пределах набора сущностей.The entity key for the instance is unique within the entity set.

  • Экземпляр не существует ни в каком другом наборе сущностей.The instance does not exist in any other entity set.

    Примечание

    Несколько наборов сущностей могут быть определены при помощи одного и того же типа сущности, однако экземпляр одного типа сущности может существовать только в одном наборе сущностей.Multiple entity sets can be defined using the same entity type, but an instance of a given entity type can only exist in one entity set.

Нет необходимости определять набор сущностей для каждого типа сущности в концептуальной модели.You do not have to define an entity set for each entity type in a conceptual model.

ПримерExample

На приведенной ниже схеме показана концептуальная модель с тремя типами сущностей: Book, Publisher и Author.The diagram below shows a conceptual model with three entity types: Book, Publisher, and Author.

Пример модели с тремя типами сущностей

На следующей схеме показаны два набора сущностей (Books и Publishers) и набор ассоциаций (PublishedBy), основанный на приведенной выше концептуальной модели.The following diagram shows two entity sets (Books and Publishers) and an association set (PublishedBy) based on the conceptual model shown above. Бизнес-аналитика в Books наборе сущностей представляет экземпляр Book типа сущности во время выполнения.Bi in the Books entity set represents an instance of the Book entity type at run time. Аналогичным образом PJ представляет Publisher экземпляр в Publishers наборе сущностей.Similarly, Pj represent a Publisher instance in the Publishers entity set. Бипж представляет экземпляр PublishedBy ассоциации в PublishedBy наборе ассоциаций.BiPj represents an instance of the PublishedBy association in the PublishedBy association set.

Снимок экрана, на котором показан пример набора.

Entity Framework ADO.NET использует доменный язык (DSL), называемый языком определения концептуальной схемы (CSDL), для определения концептуальных моделей.The ADO.NET Entity Framework uses a domain-specific language (DSL) called conceptual schema definition language (CSDL) to define conceptual models. Далее язык CSDL определяет контейнер сущностей с одним набором сущностей для каждого типа сущностей в приведенной выше концептуальной модели.The following CSDL defines an entity container with one entity set for each entity type in the conceptual model shown above. Обратите внимание, что имя и тип сущности для каждого набора сущностей определены при помощи атрибутов XML.Note that the name and entity type for each entity set are defined using XML attributes.

<EntityContainer Name="BooksContainer" >
  <EntitySet Name="Books" EntityType="BooksModel.Book" />
  <EntitySet Name="Publishers" EntityType="BooksModel.Publisher" />
  <EntitySet Name="Authors" EntityType="BooksModel.Author" />
  <AssociationSet Name="PublishedBy" Association="BooksModel.PublishedBy">
    <End Role="Book" EntitySet="Books" />
    <End Role="Publisher" EntitySet="Publishers" />
  </AssociationSet>
  <AssociationSet Name="WrittenBy" Association="BooksModel.WrittenBy">
    <End Role="Book" EntitySet="Books" />
    <End Role="Author" EntitySet="Authors" />
  </AssociationSet>
</EntityContainer>

Предусмотрена возможность определять несколько наборов сущностей на тип (модель MEST).It is possible to define multiple entity sets per type (MEST). Далее язык CSDL определяет контейнер сущностей с двумя наборами сущностей для типа сущности Book.The following CSDL defines an entity container with two entity sets for the Book entity type:

<EntityContainer Name="BooksContainer" >
  <EntitySet Name="Books" EntityType="BooksModel.Book" />
  <EntitySet Name="FictionBooks" EntityType="BooksModel.Book" />
  <EntitySet Name="Publishers" EntityType="BooksModel.Publisher" />
  <EntitySet Name="Authors" EntityType="BooksModel.Author" />
  <AssociationSet Name="PublishedBy" Association="BooksModel.PublishedBy">
    <End Role="Book" EntitySet="Books" />
    <End Role="Publisher" EntitySet="Publishers" />
  </AssociationSet>
  <AssociationSet Name="BookAuthor" Association="BooksModel.BookAuthor">
    <End Role="Book" EntitySet="Books" />
    <End Role="Author" EntitySet="Authors" />
  </AssociationSet>
</EntityContainer>

См. такжеSee also