Compartilhar via


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, consulte o Modelo de Dados da Entidade: Herança.) A relação entre um tipo de entidade e um conjunto de entidades é análoga à relação entre uma linha e uma tabela em um banco de dados relacional: Como uma linha, um tipo de entidade descreve a estrutura de dados e, como uma tabela, um conjunto de entidades contém instâncias de uma determinada estrutura. Um conjunto de entidades não é um constructo de modelagem de dados; ele não descreve a estrutura de dados. Em vez disso, um conjunto de entidades fornece um constructo para um ambiente de hospedagem ou armazenamento (como o common language runtime ou um banco de dados do SQL Server) para agrupar instâncias de tipo de entidade para que possam ser mapeadas para um armazenamento de dados.

Um conjunto de entidades é definido em um contêiner de entidade, que é um agrupamento lógico de conjuntos de entidades e conjuntos de associação.

Para que uma instância de tipo de entidade exista em um conjunto de entidades, o seguinte deve ser verdadeiro:

  • O tipo da instância é o mesmo que o tipo de entidade no qual o conjunto de entidades se baseia ou o tipo da instância é um subtipo do tipo de entidade.

  • A chave de entidade da instância é exclusiva dentro do conjunto de entidades.

  • A instância não existe em nenhum outro conjunto de entidades.

    Observação

    Vários conjuntos de entidades podem ser definidos usando o mesmo tipo de entidade, mas uma instância de um determinado tipo de 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 abaixo mostra um modelo conceitual com três tipos de entidade: Book, Publishere Author.

Modelo de exemplo com três tipos de entidade

O diagrama a seguir mostra 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 durante a execução. Da mesma forma, o Pj representa uma Publisher instância no Publishers conjunto de entidades. BiPj representa uma instância da PublishedBy associação no conjunto de PublishedBy associações.

Captura de tela que mostra um exemplo de conjuntos.

O ADO.NET Entity Framework usa uma DSL (linguagem específica do domínio) chamada CSDL (linguagem de definição de esquema conceitual) para definir modelos conceituais. O CSDL a seguir define um contêiner de entidade com uma entidade definida 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). O CSDL a seguir define um contêiner de entidade com dois conjuntos de entidades para o Book tipo de entidade:

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

Consulte também