Condition-Element (AssociationSetMapping)
Das Condition-Element in einem AssociationSetMapping gibt die logische Anforderung für die Gültigkeit der Association an, die im Entitätsdatenmodell (EDM) zugeordnet wird. Beim Mapping einer Zuordnung werden die Spalten in Datentabellen identifiziert, denen Eigenschaften der verknüpften Entitäten entsprechen.
Das folgende AssociationSetMapping-Element ordnet die in der konzeptionellen Schemadefinitionssprache (CSDL) definierte Employee_Employee_ManagerID-Zuordnung im HumanResources-Abschnitt der AdventureWorks-Datenbank zu. Die folgende Mappingspezifikation verknüpft eine Employee-Entität mit einer anderen, als Manager festgelegten Employee-Entität.
<?xml version="1.0" encoding="utf-8"?>
<Mapping Space="C-S"
xmlns:edm="urn:schemas-microsoft-com:windows:storage:mapping:CS"
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>
Beide durch diese Association verknüpften Entitäten sind Employee-Entitäten. Das Mapping ist abhängig von der Condition, die in der letzten Zeile des AssociationSetMappng angegeben ist. Damit die Association gültig ist, muss sie eine Employee-Entität mit einer anderen, als Manager festgelegten Employee-Entität verknüpfen. Die Speicherstruktur, die diese Verbindung darstellt, ist eine Fremdschlüsseleinschränkung in der ManagerID-Spalte der Employee-Tabelle. Wenn diese Bedingung den Wert NULL hat, ist sie nicht erfüllt, und das Zuweisen zusätzlicher Detailinformationen in einer Instanz der Association wäre sinnlos. Wenn eine Association dieses Typs in Code erstellt wird, während ManagerID den Wert NULL hat, löst die Association eine Ausnahme aus, sobald die SaveChanges-Methode aufgerufen wird.
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)