在实体之间建立的关系上导航。
语法
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-end
, from-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 销售模型。 若要编译并运行此查询,请执行以下步骤:
按照作方法中的过程作 :执行返回 StructuralType 结果的查询。
将以下查询作为参数传递给
ExecuteStructuralTypeQuery
方法:
SELECT address.AddressID, (SELECT VALUE DEREF(soh)
FROM NAVIGATE(address,
AdventureWorksModel.FK_SalesOrderHeader_Address_BillToAddressID)
AS soh)
FROM AdventureWorksEntities.Addresses AS address