NAVIGATE (实体 SQL)

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

语法

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

论据

instance-expression 实体的实例。

relationship-type 关系的类型名称,来自概念架构定义语言 (CSDL) 文件。 该 relationship-type 名称限定为 <命名空间>。<关系类型名称>。

to 关系结束。

from 关系的开头。

返回值

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

注解

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

NAVIGATE 在 O 和 C 空间中有效。

导航构造的一般形式如下:

navigate(instance-expression、 [ relationship-type[ to-endfrom-end ] ] )

例如:

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

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

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

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

同样,在以下窗体的查询中,导航表达式将生成集合<Ref<Order>>。

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

实例表达式必须是实体/ref 类型。

示例:

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

  1. 按照作方法中的过程作 :执行返回 StructuralType 结果的查询

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

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

另请参阅