我努力在nHibernate查询中复制简单的SQL左连接。 SO上的其他答案导致我更加困惑,以解决在域查询中解决左连接问题的最明智的方法。努力在nHibernate查询中加入左连接
例子:
2 DB表:
Customer
CustId INT PK
Orders
OrderId INT PK
CustId INT FK
Status INT
1 SQL查询:
Select c.CustId from Customer c
left join Orders o on o.CustId = c.CustId and o.Status = 2
where o.OrderId is null
这将检索客户的唯一列表中的状态2没有命令谁, 请注意,它还包括根本没有订单的客户。 这是一个人为的例子来简化这个问题,但这种类型的查询是非常有用的,不容易做任何其他方式。
想象一下“顾客”和“订单”的映射,它们仅仅反映了上面的示例表。
是否有一种简单的方法可以在查询中提取nHibernate中唯一的,非状态-2的客户列表,而不诉诸SQL查询或结束于选择n + 1场景?
查询偏好:
1 LINQ到的nhibernate
2 QueryOver
3 HQL
4标准。
谢谢。
谢谢你,我现在已经通过HQL获得了这个工作,尽管它确实依赖于所有正在映射的连接关联 - 我希望创建一个查询来连接不相关的域对象,但我猜测关联映射是有意义的。 – iandayman
是的,映射协会真的很有意义。我认为不做映射它们就可以做你想做的事情。 –