Association 項目 (CSDL)
Association 項目定義兩個實體類型之間的關聯性。關聯 (Association) 必須指定關聯性 (relationship) 中的相關實體類型,以及關聯性每一端可能的實體類型數量 (也就是「多重性」)。關聯 End 的多重性可以有一 (0) 個、零或一個 (0..1),或多個 (*) 值。這項資訊會在兩個 End 子項目中指定。
關聯其中一端的實體類型執行個體可透過導覽屬性或外部索引鍵來存取 (若在實體類型上公開)。如需詳細資訊,請參閱 NavigationProperty 項目、ReferentialConstraint 項目 和 Defining and Managing Relationships。
在應用程式中,關聯的執行個體代表實體類型之間的特定關聯。關聯執行個體會在邏輯上群組於關聯集中。如需詳細資訊,請參閱 AssociationSet 項目。
Association 項目可以擁有下列子項目 (依列出的順序):
Documentation (零或一個項目)
End (兩個項目)
ReferentialConstraint (零或一個項目)
Annotation 項目 (零或多個項目)
適用屬性
下表描述可套用至 Association 項目的屬性。
屬性名稱 |
必要 |
值 |
---|---|---|
Name |
是 |
關聯的名稱。 |
注意
任何數量的附註屬性 (自訂 XML 屬性) 都可以套用至 Association 項目。不過,自訂屬性不可屬於任何 XML 命名空間,這是保留供 CSDL 使用。任兩個自訂屬性的完整名稱不能相同。
範例
下列範例顯示的 Association 項目可定義 CustomerOrders 關聯 (尚未在 Customer 和 Order 實體類型公開外部索引值時)。關聯中每個 End 的 Multiplicity 值表示可以讓多個 Orders 與一個 Customer 相關聯,但一個 Customer 只能與一個 Order 相關聯。此外,OnDelete 項目表示,如果刪除 Customer,就會刪除所有與特定 Customer 相關且已載入至 ObjectContext 的 Orders。
<Association Name="CustomerOrders">
<End Type="ExampleModel.Customer" Role="Customer" Multiplicity="1" >
<OnDelete Action="Cascade" />
</End>
<End Type="ExampleModel.Order" Role="Order" Multiplicity="*" />
</Association>
下列範例顯示的 Association 項目可定義 CustomerOrders 關聯 (已在 Customer 和 Order 實體類型公開外部索引值時)。公開外部索引值後,實體之間的關聯性即可使用 ReferentialConstraint 項目管理。對應此關聯與資料來源時,不需要對應的 AssociationSetMapping 項目。
<Association Name="CustomerOrders">
<End Type="ExampleModel.Customer" Role="Customer" Multiplicity="1" >
<OnDelete Action="Cascade" />
</End>
<End Type="ExampleModel.Order" Role="Order" Multiplicity="*" />
<ReferentialConstraint>
<Principal Role="Customer">
<PropertyRef Name="Id" />
</Principal>
<Dependent Role="Order">
<PropertyRef Name="CustomerId" />
</Dependent>
</ReferentialConstraint>
</Association>