关联集 (EDM)

在 实体数据模型 (EDM) 中,AssociationSet 为单个类型的关联的逻辑容器。同样,实体集是用于相同类型的实体的容器。在架构中定义的实体集和关联集映射到用于存储应用程序数据的数据库中的各个表。实体集和关联集构成了编程对象模型中将由应用程序代码使用的类的基础。

之所以指定 AssociationSet,原因有两个:

  • 确定 Association 的端点的范围。

  • 管理实体实例之间的关联。

因为一个 EntityType 可由多个 EntitySet 使用,所以需要使用关联集确定关系的端点的范围。

Association 连接属于 Association 指定的两个实体集的两个或更多实体实例。AssociationSet 包含 Association 的实例(如果有)。

实体类型在逻辑上包含在实体集和实体容器中并在实体集和实体容器中实例化。同样,关联在关联集和实体容器中实例化。

关联和关联集是抽象概念,就像实体和实体集一样。AssociationSet 的每个实现都是派生类型。

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 实体。接下来,该示例定义名为 CustomerOrderTypeAssociation。实体集 CustomerSetOrderSetEntityContainer 内声明。有关实体容器的更多信息,请参见实体容器 (EDM)

EntityContainer 内还将 AssociationSet 元素定义一个名为 CustomerOrderSet、类型为 CustomerOrderTypeAssociationSet

CustomerOrderSet 的两个 End 属性为 EntitySet 类型,在此示例中为 CustomerSetOrderSetAssociation 实例位于 CustomerOrderSet 中,并连接 CustomerSet 中的 Customer 实例与 OrderSet 中的 Order 实例。

另请参见

概念

关联 (EDM)
实体数据模型关系
实体数据模型类型
实体集 (EDM)
实体容器 (EDM)
架构 (EDM)

其他资源

架构和映射规范(实体框架)