NAVIGATE (Entity SQL)

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

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

参数

  • instance-expresssion
    一个实体的实例。
  • relationship-type
    关系的类型名称,取自概念架构定义语言 (CSDL) 文件。 relationship-type 限定为 <命名空间>.<关系类型名称>。
  • to
    关系的结束端。
  • from
    关系的起始端。

返回值

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

备注

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

NAVIGATE 在 O 和 C 空间中有效。

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

navigate(instance-expresssion, 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. 执行如何:执行返回 StructuralType 结果的查询 (EntityClient)中的过程。

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

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

另请参见

参考

NAVIGATE (Entity SQL)

概念

Entity SQL 参考