Association 元素 (SSDL)

在 实体数据模型 (EDM) 中,元数据架构中的关联指定了在存储架构定义语言 (SSDL) 中定义的实体类型之间的逻辑关系。

元数据架构中声明的关联的 SSDL 语法类似于概念性架构定义语言 (CSDL) 中使用的语法,但 SSDL 语法包括用于指定 FromRoleToRole 的属性。这些属性等效于数据库表中的主键和外键。

以下架构示例包括 Schema 元素,并且定义了 Adventure Works Human Resources 目标数据库分区的 NamespaceAlias。一个 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 实体之间的逻辑关系。AssociationEnd 属性的 Type 赋值都是 Employee 实体。其中一个员工由 AssociationEnd 属性的 Role 属性指定为 Employee1

关联中的类型赋值必须使用完全限定名称。在本示例中,类型赋值使用 SelfAlias 表示 AdventureWorksHRTarget 命名空间。

AssociationEnd 属性的 Mulitiplicity 指示,一个 Employeee1 可以参与零个或更多个此关联的实例;经理可以管理多名员工,但接受管理的 Employee1 只能向一名经理汇报,因此可以参与零个或一个此类型的关联。

Association 上的 ReferentialConstraintEmployee1 指定为 DependentRole,将 Employee 指定为 PrincipalRole。此约束对应于 Employee 数据表中的外键 ManagerID

有关关联的属性的更多信息,请参见下列子主题:

Name(关联 SSDL)

Role 属性(关联 SSDL)

Type 属性(关联 SSDL)

Multiplicity 属性(关联 SSDL)

ReferentialConstraint 元素(关联 SSDL)

另请参见

概念

AssociationSet 元素 (EntityContainer SSDL)
Association 元素 (CSDL)
AssociationSetMapping 元素 (MSL)
ReferentialConstraint 元素(关联 SSDL)
AdventureWorks 完整模型 (EDM)