我有tableA和tableB

tableA具有B_Id属性。

此查询工作正常:

 IEnumerable<A> a = Session.Query<A>().Fetch(r=>r.B);


但我想要类似的东西:

 IEnumerable<A> a = Session.Query<A>().Where(r=>r.B.Active).Fetch(r=>r.B);


似乎当我这样做时,它不再执行简单的外部联接,并且如果表B中没有活动记录,则不会得到结果。

我想做一个纯外部联接,仍然会给我结果,但是A实体的B属性为null。

nhibernate LINQ是否支持在外部联接表上放置where子句的功能?

最佳答案

根据this post on the nhusers group,它显然不受支持,因此您必须使用HQL。

至于原因,我推测作者计划添加它,但是优先级更高。我个人认为它是关键功能。

关于c# - 为什么nhibernate LINQ不支持简单的外部联接(鉴于外部联接表上的where子句)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4588353/

10-09 03:20