conjunto de entidades

Um conjunto de entidades é um contêiner lógico para instâncias de um tipo de entidade e instâncias de qualquer tipo derivado desse tipo de entidade. (Para obter informações sobre tipos derivados, confira Modelo de Dados de Entidade: herança.) O relacionamento entre um tipo de entidade e um conjunto de entidades é análogo ao relacionamento entre uma linha e uma tabela em um banco de dados relacional: Como uma linha, um tipo de entidade descreve os dados estrutura e, como uma tabela, um conjunto de entidades contém instâncias de uma determinada estrutura. Um conjunto de entidades não é um dados que modelam a compilação; não descreve a estrutura de dados. Em vez disso, um conjunto de entidades fornece uma compilação para um ambiente de hospedagem ou de armazenamento (como Common Language Runtime ou um base de dados do SQL Server) instâncias de tipo de entidade do grupo de modo que eles possam ser mapeadas em um armazenamento de dados.

Um conjunto de entidades é definido dentro de contêiner de entidade, que é um agrupamento lógico de conjuntos de entidades e de conjuntos de associações.

Para uma instância do tipo de entidade existe em um conjunto de entidades, o seguinte deve ser verdadeira:

  • O tipo de qualquer instância é o mesmo como o tipo de objeto no qual o conjunto de entidades é baseado, ou o tipo de instância é um subtipo do tipo de objeto.

  • A chave de entidade para a instância é exclusivo dentro do conjunto de entidades.

  • A instância não existir em qualquer outro conjunto de entidades.

    Observação

    Os vários conjuntos de entidades podem ser definidos usando o mesmo tipo de entidade, mas uma instância de um tipo de dado entidade só pode existir em um conjunto de entidades.

Você não precisa definir um conjunto de entidades para cada tipo de entidade em um modelo conceitual.

Exemplo

O diagrama a seguir mostra um modelo conceitual com três tipos de entidade: Book, Publisher, e Author.

Example model with three entity types

A seguir temos de diagrama dois conjuntos de entidades (Books e Publishers) e um conjunto de associações (PublishedBy) com base no modelo conceitual mostrado acima. Bi no conjunto de entidades Books representa uma instância do tipo de entidade Book em tempo de execução. Da mesma forma, Pj representa uma instância de Publisher no conjunto de entidades de Publishers. BiPj representa uma instância de associação de PublishedBy no conjunto de associações de PublishedBy.

Screenshot that shows a Sets example.

O Entity Framework do ADO.NET usa uma DSL (linguagem específica de domínio) chamada CSDL (linguagem de definição de esquema conceitual) para definir modelos conceituais. CSDL seguir define um contêiner de entidade com um conjunto de entidades para cada tipo de entidade no modelo conceitual mostrado acima. Observe que o nome e o tipo de entidade para cada conjunto de entidades são definidos usando atributos 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>

É possível definir vários conjuntos de entidades por tipo (MEST). CSDL seguir define um contêiner de entidade com dois conjuntos de entidades para o tipo de entidade de Book :

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

Confira também