Elemento AssociationSetMapping (MSL)
Il mapping di un'associazione in Entity Data Model (EDM) identifica le colonne nelle tabelle dati che corrispondono agli elementi EndProperty delle entità correlate. Per consentire la correlazione delle entità nello schema concettuale, è necessario che sia presente una colonna di chiave esterna nella tabella dati contenente alcune proprietà di un'altra tabella. In genere questa colonna di chiave esterna corrisponde alla proprietà chiave di un'entità.
Un oggetto AssociationSetMapping viene specificato all'interno di un elemento EntityContainerMapping. La dichiarazione seguente di Employee_Employee_ManagerIDAssociationSetMapping definisce il mapping di AssociationSet e TypeName definiti nello schema concettuale di AdventureWorksHRModel.
Poiché entrambe le entità correlate sono entità Employee, una tabella contiene i dati per entrambe le entità. Gli elementi EndProperty di questo esempio specificano il ruolo di ogni entità correlata definita nello schema concettuale e gli elementi ScalarProperty specificano una proprietà di ogni entità e l'oggetto ColumnName a cui questa proprietà corrisponde. Le entità finali di questa associazione sono entità Employee e la proprietà identificativa in ognuno dei casi è collegata a una colonna EmployeeID corrispondente della tabella dati Employee. La condizione specifica che alla colonna ManagerID della seconda entità Employee deve essere assegnato un valore. In caso contrario, l'oggetto Association non è valido.
<?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 questo esempio l'elemento AssociationSetMapping fa parte dello schema AdventureWorksHRModel. L'elemento EntityContainerMapping di HumanResources di questo oggetto AssociationSetMapping esegue il mapping dell'associazione Employee_Employee_ManagerID. L'associazione mette in correlazione un'entità dipendente a un'altra entità dipendente designata come manager.
Questo mapping dipende dall'oggetto Condition specificato nella riga finale di AssociationSetMapping. Affinché l'associazione sia valida, deve connettere un'entità Employee con un'altra entità Employee designata come manager da un valore di chiave esterna nella colonna ManagerID della tabella Employee. Se a questa colonna non viene assegnato un valore, la condizione non è soddisfatta e l'assegnazione di dettagli aggiuntivi in questa associazione sarebbe inutile. Se un'associazione di questo tipo viene creata nel codice quando il valore di ManagerID è Null, l'associazione genera un'eccezione quando viene chiamato il metodo SaveChanges.
Vedere anche
Concetti
Elemento EntityContainerMapping (MSL)
Elemento Association (CSDL)
Elemento AssociationSet (EntityContainer CSDL)
Elemento Association (SSDL)
Elemento AssociationSet (EntityContainer SSDL)
Modello completo di AdventureWorks (EDM)