Partager via


Élément AssociationSetMapping (MSL)

Le mappage d'une association dans le modèle EDM (Modèle de données d'entité) identifie les colonnes des tables de données qui correspondent aux éléments EndProperty d'entités associées. Pour les entités dans le schéma conceptuel à associer, il doit exister une colonne de clé étrangère dans la table de données qui contient une propriété d'une autre table. En général, cette colonne de clé étrangère correspond à la propriété de clé d'une entité.

Un AssociationSetMapping est spécifié au sein d'un élément EntityContainerMapping. La déclaration suivante du AssociationSetMappingEmployee_Employee_ManagerID définit le mappage du AssociationSet et du TypeName définis dans le schéma conceptuel AdventureWorksHRModel.

Étant donné que les deux entités associées sont des entités Employee, une table contient les données pour les deux entités. Dans cet exemple, les éléments EndProperty spécifient le rôle de chaque entité associée définie dans le schéma conceptuel, et les éléments ScalarProperty spécifient une propriété de chaque entité ainsi que le ColumnName auquel cette propriété correspond. Les terminaisons de cette association sont toutes les deux des entités Employee et la propriété d'identification dans chaque cas est liée à une colonne EmployeeID correspondante de la table de données Employee. La condition spécifie qu'une valeur doit être affectée à la colonne ManagerID du second Employee ou le Association n'est pas valide.

<?xml version="1.0" encoding="utf-8"?>
<Mapping Space="C-S" 
    xmlns="urn:schemas-microsoft-com:windows:storage:mapping:CS">
  <EntityContainerMapping CdmEntityContainer="HumanResources" 
StorageEntityContainer="HumanResources">

    <AssociationSetMapping Name="Employee_Employee_ManagerID" 
TypeName="AdventureWorksHRModel.Employee_Employee_ManagerID" 
StoreEntitySet="Employee">
      <EndProperty Name="Employee">
        <ScalarProperty Name="EmployeeID" ColumnName="ManagerID" />
      </EndProperty>
      <EndProperty Name="EmployeeManager">
        <ScalarProperty Name="EmployeeID" ColumnName="EmployeeID" />
      </EndProperty>
      <Condition ColumnName="ManagerID" IsNull="false" />
    </AssociationSetMapping>

  </EntityContainerMapping>

Dans cet exemple, l'élément AssociationSetMapping fait partie du schéma AdventureWorksHRModel. L'élément HumanResourcesEntityContainerMapping de cet élément AssociationSetMapping correspond à l'association Employee_Employee_ManagerID. L'association lie une entité d'employé à une autre entité d'employé désignée comme responsable.

Ce mappage dépend du Condition spécifié dans la dernière ligne de l'élément AssociationSetMapping. Pour que l'association soit valide, elle doit connecter une entité Employee avec une autre entité Employee désignée comme responsable par une valeur de clé étrangère dans la colonne ManagerID de la table Employee. Si aucune valeur n'est affectée à cette colonne, la condition n'est pas satisfaite et l'affectation de détails supplémentaires dans cette association serait dépourvue de sens. Si une association de cette sorte est créée dans le code lorsque la valeur ManagerID est Null, l'association lève une exception lorsque la méthode SaveChanges est appelée.

Voir aussi

Concepts

Élément EntityContainerMapping (MSL)
Élément Association (CSDL)
Élément AssociationSet (EntityContainer CSDL)
Élément Association (SSDL)
Élément AssociationSet (EntityContainer SSDL)
Modèle complet AdventureWorks (EDM)