共用方式為


關聯集 (EDM)

在 實體資料模型 (EDM) 中,AssociationSet 是單一型別之關聯的邏輯容器。同樣地,實體集是相同型別之實體的容器。定義在結構描述中的實體集和關聯集會對應到針對應用程式儲存資料之資料庫的資料表。實體集和關聯集是應用程式程式碼使用之程式設計物件模型內的類別基礎。

指定 AssociationSet 是為了以下兩個原因而使用:

  • Association 的端點設定範圍。

  • 管理實體執行個體 (Instance) 之間的關聯。

由於 EntityType 可由一個以上的 EntitySet 所使用,所以需要關聯集來設定關聯性端點的範圍。

Association 會連接到兩個或多個實體執行個體,這些執行個體屬於 Association 指定的兩個實體集。AssociationSet 包含 Association 的執行個體 (如果有的話)。

實體類型在邏輯上包含在實體集和實體容器內,並在其中具現化。同樣地,關聯會在關聯集和實體容器內具現化。

關聯和關聯集都是抽象概念,就像實體和實體集一樣。AssociationSet 的每一個實作 (Implementation) 都是衍生型別 (Derived Type)。

AssociationSet 項目的 Association 屬性會使用下列概念結構定義語言 (CSDL) 結構描述語法來指定 Association

<AssociationSet Name="CustomerOrderSet" Association="CustomerOrderType">

EntitySet 的兩端會在 AssociationSetEnd 屬性內指定。此關聯必須由命名空間名稱所完整限定。

<AssociationSet Name="CustomerOrderSet" Association=" 
                        MyCompany.LOBSchema.CustomerOrderType">
    <End Role="Orders" EntitySet="CustomerSet" />
    <End Role="OrderedBy" EntitySet="OrderSet" />
</AssociationSet >

AssociationSetEnd 屬性會指定對應至這些 EntityType 執行個體的 EntitySet 執行個體。

下列範例會示範兩個實體類型、兩個實體集、一個關聯和一個關聯集的宣告:

<?xml version="1.0" encoding="utf-8"?>
<Schema xmlns:cg="https://schemas.microsoft.com/ado/2006/04/codegeneration"
    xmlns:edm="https://schemas.microsoft.com/ado/2006/04/edm"
    xmlns="https://schemas.microsoft.com/ado/2006/04/edm"
    Namespace="MyCompany.LOBSchema" Alias="Self">

    <EntityType Name="Customer">
        <Key>
          <Property Name="CustomerId" Type="Int32" Nullable="false" />
        </Key>
    <!-- Other properties -->
    </EntityType>


<EntityType Name="Order">
    <Key>
      <PropertyRef Name="OrderId" />
    </Key>
    <Property Name="OrderId" Type="Int32" Nullable="false" />
    <!-- Other properties -->
</EntityType>

<Association Name="CustomerOrderType">
    <End Role="Orders" Type="Namespace.Customer" Multiplicity="1" />
    <End Role="OrderedBy" Type=" Namespace.Order" Multiplicity="0..*" />
</Association>

<EntityContainer Name="ContainerType">
    <EntitySet Name="CustomerSet" EntityType=" Namespace.Customer" />
    <EntitySet Name="OrderSet" EntityType=" MyCompany.LOBSchema.Order" />
    <AssociationSet Name="CustomerOrderSet" Association="CustomerOrderType">
        <End Role="Orders" EntitySet=" MyCompany.LOBSchema.CustomerSet" />
        <End Role="OrderedBy" EntitySet="MyCompany.LOBSchema.OrderSet" />
    </AssociationSet>
</EntityContainer>

</Schema>

這個範例會先定義 EntityTypeCustomerOrder**** 實體。接下來,它會定義名為 CustomerOrderTypeAssociationCustomerSetOrderSet 實體集會在 EntityContainer 內宣告。如需實體容器的詳細資訊,請參閱實體容器 (EDM)

AssociationSet 項目也會定義在 EntityContainer 內,當做名為 CustomerOrderSet (CustomerOrderType 型別) 的 AssociationSet

CustomerOrderSet 的兩個 End 屬性為 EntitySet 型別,在此案例中為 CustomerSetOrderSetAssociation 執行個體位於 CustomerOrderSet 中,而且會將 CustomerSet 內的 Customer 執行個體與 OrderSet 內的 Order 執行個體連接。

另請參閱

概念

關聯 (EDM)
Entity Data Model 關聯性
Entity Data Model 類型
實體集 (EDM)
實體容器 (EDM)
結構描述 (EDM)

其他資源

結構描述和對應規格 (Entity Framework)