导航属性

导航属性实体类型的可选属性,允许从关联一端到另一导航。 与其他 属性不同,导航属性不会携带数据。

导航属性定义包括以下内容:

  • 一个名字。 (必需)

  • 导航属性要导航的关联。 (必需)

  • 导航属性要导航的关联端。 (必需)

对于关联两端的两种实体类型,导航属性都是可选的。 如果在关联末尾的一个实体类型上定义导航属性,则不必在关联的另一端的实体类型上定义导航属性。

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

示例:

下图显示了一个概念模型,其中包含三种实体类型:BookPublisherAuthor。 导航属性 PublisherAuthors 被定义在 Book 实体类型上。 导航属性 Books 在发布者实体类型和 Author 实体类型上定义。

显示具有三种实体类型的概念模型图。

ADO.NET Entity Framework 使用称为概念架构定义语言(CSDL)的特定于域的语言(DSL)来定义概念模型。 以下 CSDL 定义 Book 上图中显示的实体类型:

<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>

XML 属性用于传达定义导航属性所需的信息:该属性Name包含属性的名称,Relationship包含它导航的关联的名称,以及FromRoleToRole包含关联的末尾。

另请参阅