Freigeben über


AssociationSetMapping-Element (MSL)

Beim Mapping einer Zuordnung im Entitätsdatenmodell (EDM) werden Spalten in Datentabellen identifiziert, die den EndProperty-Elementen der verknüpften Entitäten entsprechen. Um Entitäten im konzeptionellen Schema verknüpfen zu können, muss die Datentabelle, die eine Eigenschaft einer anderen Tabelle enthält, eine Fremdschlüsselspalte enthalten. In der Regel entspricht diese Fremdschlüsselspalte der Schlüsseleigenschaft einer Entität.

Eine AssociationSetMapping wird in einem EntityContainerMapping-Element angegeben. Die folgende Deklaration des AssociationSetMappingEmployee_Employee_ManagerID definiert das Mapping des AssociationSet und des TypeName, das im konzeptionellen Schema AdventureWorksHRModel definiert ist.

Da beide verknüpfte Entitäten Employee-Entitäten sind, enthält eine Tabelle Daten für beide Entitäten. Die EndProperty-Elemente in diesem Beispiel geben die Rollen der einzelnen verknüpften Entitäten an, die im konzeptionellen Schema definiert sind. Die ScalarProperty-Elemente geben eine Eigenschaft der einzelnen Entitäten sowie den ColumnName an, dem diese Eigenschaft entspricht. Beide Enden dieser Zuordnungen sind Employee-Entitäten, und die identifizierende Eigenschaft ist jeweils mit einer entsprechenden EmployeeID-Spalte der Datentabelle Employee verknüpft. Anhand der Bedingung wird festgelegt, dass der Spalte ManagerID des zweiten Employee ein Wert zugewiesen werden muss. Andernfalls ist die Association nicht gültig.

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

In diesem Beispiel ist das AssociationSetMapping-Element ein Teil des AdventureWorksHRModel-Schemas. Das HumanResourcesEntityContainerMapping-Element dieses AssociationSetMapping ordnet die Employee_Employee_ManagerID-Zuordnung zu. Die Zuordnung verknüpft eine Mitarbeiterentität mit einer anderen als "Manager" festgelegten Mitarbeiterentität.

Dieses Mapping ist von der in der letzten Zeile des AssociationSetMapping angegebenen Condition abhängig. Damit die Zuordnung gültig ist, muss sie eine Employee-Entität mit einer anderen Employee-Entität verknüpfen, die durch einen Fremdschlüsselwert in der Spalte ManagerID der Tabelle Employee als "Manager" definiert ist. Wenn dieser Spalte kein Wert zugewiesen wurde, ist die Bedingung nicht erfüllt, und das Zuweisen zusätzlicher Details für diese Zuordnung bleibt wirkungslos. Wenn eine derartige Zuordnung in Code erstellt wird und der ManagerID-Wert NULL ist, löst die Zuordnung beim Aufrufen der Methode SaveChanges eine Ausnahme aus.

Siehe auch

Konzepte

EntityContainerMapping-Element (MSL)
Association-Element (CSDL)
AssociationSet-Element (EntityContainer CSDL)
Association-Element (SSDL)
AssociationSet-Element (EntityContainer SSDL)
Das vollständige AdventureWorks-Modell (EDM)