Partager via


jeu d'associations

Un ensemble d’associations est un conteneur logique pour les instances d’association du même type. Un jeu d’associations n’est pas une construction de modélisation des données ; autrement dit, elle ne décrit pas la structure des données ou des relations. Au lieu de cela, un jeu 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 jeu 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’un ensemble d’associations contient les informations suivantes :

Exemple :

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

Exemple de modèle avec trois types d’entités

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

Capture d’écran montrant un exemple Sets.

Le ADO.NET Entity Framework utilise un langage spécifique au domaine (DSL) appelé langage de définition de schéma conceptuel (CSDL) pour définir des modèles conceptuels. Le langage 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 de chaque jeu 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, tant qu’aucun ensemble d'associations ne partage une fin d’ensemble d’associations. Le langage CSDL suivant définit un conteneur d’entités avec deux ensembles d’associations pour l’association WrittenBy . Notez que plusieurs ensembles d'entités ont été définis pour les types d'entités Book et Author, et qu'aucun ensemble d'associations ne partage une extrémité 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