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 Modelo de Dados de 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 é uma construção de modelagem de dados; não descreve a estrutura dos dados. Em vez disso, um conjunto de entidades fornece uma construção 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 dentro de um contêiner de entidade, que é um agrupamento lógico de conjuntos de entidades e conjuntos de associações.
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 para a instância é exclusiva dentro do conjunto de entidades.
A instância não existe em nenhum outro conjunto de entidades.
Nota
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.
Não é necessário 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
, Publisher
, e Author
.
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 Books
conjunto de entidades representa uma instância do Book
tipo de entidade em tempo de execução. Da mesma forma, Pj representa uma Publisher
instância no conjunto de Publishers
entidades. BiPj representa uma instância da PublishedBy
associação no PublishedBy
conjunto de associações.
O ADO.NET Entity Framework usa uma linguagem específica de domínio (DSL) chamada linguagem de definição de esquema conceitual (CSDL) para definir modelos conceituais. A CSDL a 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). A CSDL a seguir define um contêiner de entidade com dois conjuntos de entidades para o tipo de Book
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>