conjunto de associações
Um conjunto de associações é um contêiner lógico para instâncias de associação do mesmo tipo. Um conjunto de associações não é uma construção de modelagem de dados; ou seja, não descreve a estrutura de dados ou relações. Em vez disso, um conjunto de associações 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 associação para que elas possam ser mapeadas para um armazenamento de dados.
Um conjunto de associações é definido dentro de um contêiner de entidade, que é um agrupamento lógico de conjuntos de entidades e conjuntos de associações.
Uma definição para um conjunto de associações contém as seguintes informações:
O nome do conjunto de associação. (Obrigatório)
A associação da qual conterá instâncias. (Obrigatório)
Duas associações terminam.
Exemplo
O diagrama abaixo mostra um modelo conceitual com duas associações: PublishedBy
, e WrittenBy
. Embora as informações sobre conjuntos de associações não sejam transmitidas no diagrama, o diagrama seguinte mostra um exemplo de conjuntos de associações e conjuntos de entidades com base neste modelo.
O exemplo a seguir mostra um conjunto de associações (PublishedBy
) e dois conjuntos de entidades (Books
e Publishers
) 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 associações para cada associação no diagrama acima. Observe que o nome e a associação para cada conjunto de associações 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 associações por associação, desde que não haja dois conjuntos de associações que partilhem um fim de conjunto de associações. A CSDL a seguir define um contêiner de entidade com dois conjuntos de associação para a WrittenBy
associação. Observe que vários conjuntos de entidades foram definidos para os Book
tipos de entidade e Author
que nenhum conjunto de associação compartilha um fim de conjunto de associação.
<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>