Compartilhar 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 é um dados que modelam a compilação; isto é, não descreve a estrutura de dados ou relações. Em vez disso, um conjunto de associações fornece uma compilação para um ambiente de hospedagem ou de armazenamento (como Common Language Runtime ou um base de dados SQL Server) às instâncias de associação do grupo de modo que eles possam ser mapeadas em 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 de um conjunto de associações contém as informações a seguir:

Exemplo

O diagrama a seguir mostra um modelo conceitual com duas associações: PublishedBy, e WrittenBy. Embora informações sobre conjuntos de associações não é transmitida no diagrama, o diagrama a seguir mostra um exemplo de conjuntos de associações e conjuntos de entidades baseados nesse modelo.

Example model with three entity types

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 conjunto de entidades de Books representa uma instância do tipo de entidade de Book no 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 associações para cada associação no diagrama anterior. 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 pela associação, como há dois conjuntos de associações compartilham a extremidade do conjunto de associações. CSDL seguir define um contêiner de entidade com dois conjuntos de associações para associação de WrittenBy . Observe que os vários conjuntos de entidades foram definidos para os tipos de entidade de Book e de Author e que nenhum conjunto de associações compartilha fim do conjunto de associações.

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

Confira também