набор сопоставлений (модель EDM)

Набор ассоциаций — это логический контейнер для экземпляров ассоциации одного и того же типа. Набор ассоциаций не является конструктом моделирования данных, то есть не описывает структуру данных или связи. Вместо этого ассоциация обеспечивает конструкт для среды размещения или хранения (например, для среды CLR или базы данных сервера SQL), позволяя группировать экземпляры ассоциаций так, чтобы они были сопоставлены хранилищу данных.

Набор ассоциаций определяется внутри контейнера сущностей, который является логической группой наборов сущностей и наборов ассоциаций.

Определение набора ассоциаций содержит следующую информацию.

  • Имя набора ассоциаций. (Обязательный атрибут).

  • Ассоциация, экземпляры которой будут являться содержимым. (Обязательный атрибут).

  • Две конечные точки набора ассоциаций.

Пример

На приведенной ниже схеме показана концептуальная модель с двумя ассоциациями: PublishedBy и WrittenBy. Информации о наборах ассоциаций не содержится в схеме, однако на следующей схеме показан пример наборов ассоциаций и наборов сущностей на основе этой модели.

Модель примера

В следующем примере показан набор ассоциаций (PublishedBy) и два набора сущностей (Books и Publishers) на основе приведенной выше концептуальной модели. Bi в наборе сущностей Books представляет экземпляр типа сущности Book во время выполнения. Аналогично Pj представляет экземпляр Publisher в наборе сущностей Publishers. BiPj представляет экземпляр ассоциации PublishedBy в наборе ассоциаций PublishedBy.

Задает пример

Платформа ADO.NET Entity Framework использует доменный язык DSL, называемый языком CSDL (CSDL), для определения концептуальных моделей. Далее на языке CSDL определяется контейнер сущностей с одним набором ассоциаций для каждой ассоциации на приведенной выше схеме. Обратите внимание, что имя и ассоциация для каждого набора ассоциаций определены при помощи атрибутов XML.

<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>

Можно определить несколько наборов ассоциаций на одну ассоциацию, если два набора ассоциаций не имеют одной и той же конечной точки ассоциации. Далее на языке CSDL определяется контейнер сущностей с двумя наборами ассоциаций для ассоциации WrittenBy: Обратите внимание, что несколько наборов сущностей были определены для типов сущностей Book и Author и что наборы ассоциаций не имеют одной и той же конечной точки ассоциации.

<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" />
  <EntitySet Name="FictionAuthors" 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>
  <AssociationSet Name="FictionWrittenBy" Association="BooksModel.WrittenBy">
    <End Role="Book" EntitySet="FictionBooks" />
    <End Role="Author" EntitySet="FictionAuthors" />
  </AssociationSet>
</EntityContainer>

См. также

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

Основные понятия модели EDM
модель Entity Data
свойство внешнего ключа (модель EDM)