Condition 項目 (AssociationSetMapping)
AssociationSetMapping 中的 Condition 項目會指定 實體資料模型 (EDM) 中對應之 Association 有效性的邏輯需求。對應關聯會識別資料表中的資料行,相關實體的屬性會對應到這些資料行。
下列 AssociationSetMapping 項目會在 AdventureWorks 資料庫的 HumanResources 區段中,對應概念結構定義語言 (CSDL) 內所定義的 Employee_Employee_ManagerID 關聯。下列對應規格會將 Employee 實體與指派為經理的另一個 Employee 實體產生關聯。
<?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>
這個 Association 上產生關聯的兩個實體都是 Employee 實體。這個對應取決於 AssociationSetMappng 中最後一行指定的 Condition。如果希望 Association 是有效的,它必須將 Employee 項目連接到指定為經理另一個 Employee 項目。代表此連接的儲存結構是 Employee 資料表之 ManagerID 資料行內的外部索引鍵條件約束。如果這個條件為 Null,就不符合此條件,而且指派此 Association 執行個體中的其他詳細資料就沒有意義。如果當 ManagerID 值為 Null 時,在程式碼中建立這種型別的 Association,則當呼叫 SaveChanges 方法時,Association 將會擲回例外狀況。
另請參閱
概念
EntityContainerMapping 項目 (MSL)
Association 項目 (CSDL)
AssociationSet 項目 (EntityContainer CSDL)
Association 項目 (SSDL)
AssociationSet 項目 (EntityContainer SSDL)
AdventureWorks 完整模型 (EDM)