Partager via


jeu d'associations

Un ensemble d’associations est un conteneur logique pour les instances d’association du même type. Un ensemble d'associations n'est pas une construction de modélisation des données ; autrement dit, il ne décrit ni la structure de données ni les relations. Au lieu de cela, un ensemble d'associations fournit une construction pour un environnement d'hébergement ou de stockage (tel que le Common Language Runtime ou une base de données SQL Server) pour regrouper des instances d'association afin qu'elles puissent être mappées à un magasin de données.

Un ensemble d’associations est défini dans un conteneur d’entités, qui est un regroupement logique de jeux d’entités et d’ensembles d’associations.

Une définition d'ensemble d'associations contient les informations suivantes :

Exemple

Le diagramme suivant montre un modèle conceptuel avec deux associations : PublishedBy et WrittenBy. Bien que les informations sur les ensembles d'associations ne soient pas transmises au diagramme, le diagramme suivant montre un exemple d'ensembles d'associations et de jeux d'entités basés sur ce modèle.

Example model with three entity types

L'exemple suivant montre un ensemble d'associations (PublishedBy) et deux jeux d'entités (Books et Publishers) basés sur le modèle conceptuel présenté ci-dessus. Dans le jeu d’entités Books, Bi représente une instance du type d’entité Book au moment de l’exécution. De même, Pj représente une instance Publisher dans le jeu d’entités Publishers. BiPj représente une instance de l’association PublishedBy dans l’ensemble d’associations PublishedBy.

Screenshot that shows a Sets example.

ADO.NET Entity Framework utilise un langage spécifique à un domaine (DSL), appelé CSDL (Conceptual Schema Definition Language), pour définir des modèles conceptuels. Le CSDL suivant définit un conteneur d'entités avec un ensemble d'associations pour chaque association dans le diagramme ci-dessus. Notez que le nom et l'association pour chaque ensemble d'associations sont définis à l'aide d'attributs 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>

Il est possible de définir plusieurs ensembles d’associations par association, à condition qu’une terminaison d’ensemble d’associations ne soit pas partagée par deux ensembles d’associations. Le CSDL suivant définit un conteneur d'entités avec deux ensembles d'associations pour l'association WrittenBy. Notez que plusieurs jeux d'entités ont été définis pour les types d'entité Book et Author, et qu'aucun ensemble d'associations ne partage une terminaison d'ensemble d'associations.

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

Voir aussi