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 constructo 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 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 associação para que possam ser mapeadas para um armazenamento de dados.

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

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: PublishedBye WrittenBy. Embora as informações sobre conjuntos de associação não sejam transmitidas no diagrama, o próximo diagrama mostra um exemplo de conjuntos de associações e conjuntos de entidades com base nesse 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. 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 um conjunto de associações para cada associação no diagrama acima. Observe que o nome e a associação de 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. O CSDL a seguir define um contêiner de entidade com dois conjuntos de associação para a WrittenBy associação. 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>

Consulte também