NavigationProperty 元素 (EntityType CSDL)

在 实体数据模型 (EDM) 中,NavigationProperty 元素声明一种快捷方式,用于在由 Association 类型关联的实体之间进行导航。

例如,如果在一个 Employee 类型和另一个指定为经理的 Employee 类型之间定义了 Association,则可以在 Employee 实体上指定导航属性,以便从被管理的 Employee 导航到经理,或者从经理导航到被管理的员工。

下面从 AdventureWorksHRModel 架构的 Human Relations 段中节选的部分定义了 Employee 实体以及在 Employee 实体之间将某些员工指定为经理的 Association。请注意,Association 是在相同类型的实体但不同的 Role 之间。

Association 元素声明一个名为 Employee_Employee_ManagerID 的关联。Employee 实体在此关联的两端唯一不同的属性是在 AssociationSet 定义中指定的 Role 属性。后一个 Role 指定了 EmployeeManager

Association 声明中 End 元素的 Multiplicity 属性指定一个 Employee 可以是零个或零个以上员工的经理。一个 Employee 只能有一个经理,在 RoleEmployeeManager 中指定。

  <EntityType Name="Employee" Key="EmployeeID">
    <Key>
        <PropertyRef Name="EmployeeID">
    </Key>
    <Property Name="EmployeeID" Type="Int32" Nullable="false" />
    <!-- Other properties omitted for brevity-->

<NavigationProperty Name="Employee1" 
Relationship="Adventureworks.FK_Employee_Employee_ManagerID" 
FromRole="Employee" ToRole="Employee1" />  </EntityType>

<NavigationProperty Name="Employee2" 
Relationship="Adventureworks.FK_Employee_Employee_ManagerID" 
FromRole="Employee1" ToRole="Employee" />

  <EntityContainer Name="HumanResources">

    <EntitySet Name="Employee" EntityType="Adventureworks.Employee" />

    <AssociationSet Name="FK_Employee_Employee_ManagerID"
      Association="Adventureworks.FK_Employee_Employee_ManagerID">
        <End Role="Employee" EntitySet="Employee" />
        <End Role="Employee1" EntitySet="Employee" />
    </AssociationSet>

  </EntityContainer>

NavigationProperty 是指向 Employee 实体的快捷方式,该实体是包含 NavigationPropertyEmployee 实体的经理。生成基于这些规范的对象模型后,Employee 类将包含 Manager 属性和帮助器方法,用于导航 NavigationProperty 所指定的关联。帮助器方法是使用对象模型自动生成的。

导航属性可用来实现与代码中的集合类似的功能。有关导航属性和集合的更多信息,请参见导航属性 (EDM)

NavigationProperty 元素仅用在概念架构定义语言 (CSDL) 中。在存储架构定义语言 (SSDL) 元数据中具有一个对应属性,用于指定数据库中支持此关联的主键/外键关系。在元数据中,此关联包含一个引用约束。有关 ReferentialConstraint 属性的更多信息,请参见ReferentialConstraint 元素(关联 SSDL)Association 元素 (SSDL)

另请参见

概念

实体数据模型关系
Association 元素 (CSDL)
Multiplicity 属性(关联 CSDL)
AdventureWorks 完整模型 (EDM)
导航属性 (EDM)
Association 元素 (SSDL)
ReferentialConstraint 元素(关联 SSDL)