Association 元素 (SSDL)
在 实体数据模型 (EDM) 中,元数据架构中的关联指定了在存储架构定义语言 (SSDL) 中定义的实体类型之间的逻辑关系。
元数据架构中声明的关联的 SSDL 语法类似于概念性架构定义语言 (CSDL) 中使用的语法,但 SSDL 语法包括用于指定 FromRole 和 ToRole 的属性。这些属性等效于数据库表中的主键和外键。
以下架构示例包括 Schema 元素,并且定义了 Adventure Works Human Resources 目标数据库分区的 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 属性的 Role 属性指定为 Employee1。
关联中的类型赋值必须使用完全限定名称。在本示例中,类型赋值使用 SelfAlias 表示 AdventureWorksHRTarget 命名空间。
此 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)