Partilhar via


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:

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.

Modelo de exemplo com três tipos de entidade

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. No conjunto de entidades Books, Bi representa uma instância do tipo-entidade Book 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.

Imagem de ecrã que mostra um exemplo de Sets.

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. O CSDL abaixo define um contêiner de entidade com dois conjuntos de associações para a associação WrittenBy. Observe que vários conjuntos de entidades foram definidos para os tipos de entidade Book e Author e que nenhum conjunto de associação partilha um fim com outro conjunto.

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

Ver também