NAVIGATE (Entity SQL)

导航实体之间建立的关系。

语法

navigate(instance-expression, [relationship-type], [to-end [, from-end] ])

自变量

instance-expression一个实体的实例。

relationship-type关系的类型名称,取自概念架构定义语言 (CSDL) 文件。 relationship-type 限定为 <namespace>.<relationship type name>。

to关系的结束端。

from关系的起始端。

返回值

如果结束端的基数为 1,返回值将为 Ref<T>。 如果结束端的基数为 n,返回值将为 Collection<Ref<T>>

备注

关系是实体数据模型 (EDM) 中的一类构造。 可以在两个或更多实体类型之间建立关系,用户可以通过关系从一端(实体)导航到另一端。 当关系中的名称解析没有歧义时,fromto 为有条件可选。

NAVIGATE 在 O 和 C 空间中有效。

导航构造的常规形式如下:

navigate(instance-expression, relationship-type, [ to-end [, from-end ] ] )

例如:

Select o.Id, navigate(o, OrderCustomer, Customer, Order)
From LOB.Orders as o

其中 OrderCustomer 为 relationship,Customer 和 Order 为关系的 to-end (客户)和 from-end (订单)。 如果 OrderCustomer 为 n:1 关系,那么导航表达式的结果类型为 Ref<Customer>。

此表达式的简单形式如下:

Select o.Id, navigate(o, OrderCustomer)
From LOB.Orders as o

同样,在以下形式的查询中,导航表达式将生成 Collection<Ref<Order>>。

Select c.Id, navigate(c, OrderCustomer, Order, Customer)
From LOB.Customers as c

实例表达式必须为 entity/ref 类型。

示例

下面的 Entity SQL 查询使用 NAVIGATE 运算符来导航建立在 Address 和 SalesOrderHeader 实体类型之间的关系。 此查询基于 AdventureWorks 销售模型。 若要编译并运行此查询,请执行下列步骤:

  1. 执行 How to: Execute a Query that Returns StructuralType Results中的过程。

  2. 将以下查询作为参数传递给 ExecuteStructuralTypeQuery 方法:

SELECT address.AddressID, (SELECT VALUE DEREF(soh) 
FROM NAVIGATE(address, 
    AdventureWorksModel.FK_SalesOrderHeader_Address_BillToAddressID) 
    AS soh)
FROM AdventureWorksEntities.Addresses AS address

请参阅