Ensemble d'associations (EDM)

Dans le modèle EDM (Modèle de données d'entité), un AssociationSet est un conteneur logique pour les associations d'un même type. De même, les jeux d'entités sont des conteneurs pour les entités du même type. Les jeux d'entités et les ensembles d'associations définis dans des schémas sont mappés aux tables de la base de données qui stockent les données des applications. Ils constituent la base des classes dans le modèle objet de programmation qui sera utilisé par le code d'application.

La désignation AssociationSet est utilisée pour deux raisons :

  • pour définir l'étendue des points de terminaison d'un objet Association ;

  • pour gérer les associations entre des instances d'entités.

Étant donné qu'un objet EntityType peut être utilisé par plusieurs objets EntitySet, des ensembles d'associations sont requis pour définir l'étendue des points de terminaison de la relation.

Un Association connecte deux instances d'entités, ou plus, qui appartiennent aux deux jeux d'entités spécifiés par l'élément Association. Un élément AssociationSet contient des instances, le cas échéant, de l'élément Association.

Les types d'entités sont logiquement contenus et instanciés dans des jeux d'entités et dans des conteneurs d'entités. De la même façon, les associations sont instanciées dans des jeux d'associations et dans des conteneurs d'entités.

Les associations et les ensembles d'associations sont des concepts abstraits, comme les entités et les jeux d'entités. Chaque implémentation d'un AssociationSet est un type dérivé.

L'attribut Association d'un élément AssociationSet spécifie un Association dans la syntaxe de schéma CSDL (Conceptual Schema Definition Language) suivante :

<AssociationSet Name="CustomerOrderSet" Association="CustomerOrderType">

Deux terminaisons d'élément EntitySet sont spécifiées dans les propriétés End du AssociationSet. L'association doit être dotée d'un nom qualifié complet par le nom de l'espace de noms.

<AssociationSet Name="CustomerOrderSet" Association=" 
                        MyCompany.LOBSchema.CustomerOrderType">
    <End Role="Orders" EntitySet="CustomerSet" />
    <End Role="OrderedBy" EntitySet="OrderSet" />
</AssociationSet >

Les propriétés End du AssociationSet spécifient les instances d'élément EntitySet qui correspondent à ces instances d'élément EntityType.

L'exemple suivant montre des déclarations de deux types d'entités, de deux jeux d'entités, d'une association et d'un ensemble d'associations :

<?xml version="1.0" encoding="utf-8"?>
<Schema xmlns:cg="https://schemas.microsoft.com/ado/2006/04/codegeneration"
    xmlns:edm="https://schemas.microsoft.com/ado/2006/04/edm"
    xmlns="https://schemas.microsoft.com/ado/2006/04/edm"
    Namespace="MyCompany.LOBSchema" Alias="Self">

    <EntityType Name="Customer">
        <Key>
          <Property Name="CustomerId" Type="Int32" Nullable="false" />
        </Key>
    <!-- Other properties -->
    </EntityType>


<EntityType Name="Order">
    <Key>
      <PropertyRef Name="OrderId" />
    </Key>
    <Property Name="OrderId" Type="Int32" Nullable="false" />
    <!-- Other properties -->
</EntityType>

<Association Name="CustomerOrderType">
    <End Role="Orders" Type="Namespace.Customer" Multiplicity="1" />
    <End Role="OrderedBy" Type=" Namespace.Order" Multiplicity="0..*" />
</Association>

<EntityContainer Name="ContainerType">
    <EntitySet Name="CustomerSet" EntityType=" Namespace.Customer" />
    <EntitySet Name="OrderSet" EntityType=" MyCompany.LOBSchema.Order" />
    <AssociationSet Name="CustomerOrderSet" Association="CustomerOrderType">
        <End Role="Orders" EntitySet=" MyCompany.LOBSchema.CustomerSet" />
        <End Role="OrderedBy" EntitySet="MyCompany.LOBSchema.OrderSet" />
    </AssociationSet>
</EntityContainer>

</Schema>

Cet exemple définit tout d'abord les entités Customer et Order****de EntityType. Il définit ensuite l'élément Association nommé CustomerOrderType. Les jeux d'entités CustomerSet et OrderSet sont déclarés à l'intérieur du EntityContainer. Pour plus d'informations sur les conteneurs d'entités, voir Conteneurs d'entités (EDM).

L'élément AssociationSet est également défini à l'intérieur du EntityContainer en tant que AssociationSet nommé CustomerOrderSet de type CustomerOrderType.

Les deux propriétés End de CustomerOrderSet sont des types EntitySet, dans le cas présent CustomerSet et OrderSet. Les instances de Association se trouvent dans CustomerOrderSet et connectent les instances de Customer dans CustomerSet aux instances de Order dans OrderSet.

Voir aussi

Concepts

Association (EDM)
Relations du modèle Entity Data Model
Types de modèles EDM
Jeux d'entités (EDM)
Conteneurs d'entités (EDM)
Schémas (EDM)

Autres ressources

Schémas et spécification de mappage (Entity Framework)