Association 項目 (SSDL)
在 實體資料模型 (EDM) 中,中繼資料結構描述內的關聯會指定存放結構定義語言 (SSDL) 內所定義之實體類型之間的邏輯關聯性。
中繼資料結構描述內所宣告之關聯的 SSDL 語法類似於概念結構定義語言 (CSDL) 中所使用的語法,不過 SSDL 語法包含了指定 FromRole 和 ToRole 的屬性。這些屬性相當於資料庫資料表中的主索引鍵和外部索引鍵。
下列結構描述範例包含 Schema 項目,而且包含定義之 Adventure Works 人力資源目標資料庫資料分割的 Namespace 和 Alias。此範例只需要一個 EntityType 定義,因為 Employee_Employee_ManagerID 關聯的兩端都是 Employee 實體。
<?xml version="1.0" encoding="utf-8"?>
<Schema Namespace="AdventureWorksHRTarget" Alias="Self"
xmlns="https://schemas.microsoft.com/ado/2006/04/edm/ssdl">
<EntityType Name="Employee">
<Key>
<PropertyRef Name="EmployeeID" />
</Key>
<Property Name="EmployeeID" Type="int" Nullable="false" />
<Property Name="NationalIDNumber" Type="nvarchar" Nullable="false" MaxLength="15" />
<Property Name="ContactID" Type="int" Nullable="false" />
<Property Name="LoginID" Type="nvarchar" Nullable="false" MaxLength="256" />
<Property Name="ManagerID" Type="int" />
<!- Some employee properties ommitted for brevity -->
</EntityType>
<Association Name="FK_Employee_Employee_ManagerID">
<End Role="Employee" Type="Adventureworks.Store.Employee" Multiplicity="0..1" />
<End Role="Employee1" Type="Adventureworks.Store.Employee" Multiplicity="*" />
<ReferentialConstraint>
<Principal Role="Employee">
<PropertyRef Name="EmployeeID" />
</Principal>
<Dependent Role="Employee1">
<PropertyRef Name="ManagerID" />
</Dependent>
</ReferentialConstraint>
</Association>
在 Employee_Employee_ManagerID 關聯中所使用的這個 Employee 實體宣告中,會使用儲存模型的資料型別來指定 Employee 實體的屬性,在此範例中就是 SQL Server 型別。
Association 項目會定義兩個 Employee 實體之間的邏輯關聯性。Association 之 End 屬性的 Type 指派都是 Employee 實體。其中一個員工會由 Association 之 End 屬性 (Property) 的 Role 屬性 (Attribute) 指定為 Employee1。
關聯中的型別指派是完整限定名稱。在此範例中,型別指派會針對 AdventureWorksHRTarget 命名空間使用 SelfAlias。
這個 Association 之 End 屬性的 Mulitiplicity 表示 Employeee1 可參與此關聯的零個或多個執行個體;一位經理可管理數個員工,但是被管理的 Employee1 只能向一位經理報告,因此可參與此型別的零個或一個關聯。
Association 上的 ReferentialConstraint 會將 Employee1 指定為 DependentRole,並將 Employee 指定為 PrincipalRole。此限制式對應到 Employee 資料表中的 ManagerID 外部索引鍵。
如需關聯之屬性的詳細資訊,請參閱下列副主題:
ReferentialConstraint 項目 (關聯 SSDL)
另請參閱
概念
AssociationSet 項目 (EntityContainer SSDL)
Association 項目 (CSDL)
AssociationSetMapping 項目 (MSL)
ReferentialConstraint 項目 (關聯 SSDL)
AdventureWorks 完整模型 (EDM)