NavigationProperty 元素 (CSDL)

NavigationProperty 元素定义一个导航属性,该属性提供对关联另一端的引用。 与使用 Property 元素定义的属性不同,导航属性不定义数据的形状和特征。 它们提供了一种在两个实体类型之间导航关联的方法。

注意,对于关联两端的两种实体类型,导航属性都是可选的。 如果您对于位于关联一端的实体类型定义一个导航属性,则不需要对于位于关联另一端的实体类型定义导航属性。

导航属性返回的数据类型是由其远程关联端的重数确定的。 例如,假设导航属性 OrdersNavProp 存在于 Customer 实体类型上并导航 CustomerOrder 之间的一对多关系。 因为导航属性的远程关联端的重数为多 (*),所以其数据类型是集合(属于 Order)。 同样,如果导航属性 CustomerNavProp 存在于 Order 实体类型上,其数据类型应为 Customer,因为远程端的重数为一 (1)。

NavigationProperty 元素可以具有以下子元素(按所列顺序):

适用的特性

下表介绍可应用于 NavigationProperty 元素的特性。

特性名称 是否必需

Name

导航属性的名称。

Relationship

处于模型的作用域中的关联的名称。

ToRole

导航在此结束的关联端。 ToRole 特性的值必须与在其中一个关联端(关联端在 AssociationEnd 元素中定义)上定义的其中一个 Role 特性的值相同。

FromRole

导航从其开始的关联端。 FromRole 特性的值必须与在其中一个关联端(关联端在 AssociationEnd 元素中定义)上定义的其中一个 Role 特性的值相同。

Bb387104.note(zh-cn,VS.100).gif注意:
可以将任何数量的批注特性(自定义 XML 特性)应用于 NavigationProperty 元素。然而,自定义特性可能不属于为 CSDL 保留的任何 XML 命名空间。任何两个自定义特性的完全限定名称都不能相同。

示例

下面的示例定义一个实体类型 (Book),其中包含两个导航属性(PublishedByWrittenBy):

<EntityType Name="Book">
  <Key>
    <PropertyRef Name="ISBN" />
  </Key>
  <Property Type="String" Name="ISBN" Nullable="false" />
  <Property Type="String" Name="Title" Nullable="false" />
  <Property Type="Decimal" Name="Revision" Nullable="false" Precision="29" Scale="29" />
  <NavigationProperty Name="Publisher" Relationship="BooksModel.PublishedBy"
                      FromRole="Book" ToRole="Publisher" />
  <NavigationProperty Name="Authors" Relationship="BooksModel.WrittenBy"
                      FromRole="Book" ToRole="Author" />
</EntityType>

另请参见

概念

实体框架概述
CSDL 规范
Schema 元素 (CSDL)

其他资源

CSDL、SSDL 和 MSL 规范
ADO.NET Entity Data Model Tools
navigation property (Entity Data Model)