我想在写相关子查询的WHERE子句这样的:如何使用LINQ在Where子句中使用NHibernate子查询?
var foo = from d in session.Query<Document>()
where true ==
(from a in session.Query<ACLEntry>()
where a.Id == d.Id || a.Id == null
select a.Result
).FirstOrDefault()
select d;
预期的SQL输出是非常相似的this unanswered question on SO。
我认为Linq声明本身很好,因为我可以让它在LinqPad原型中运行。但NHibernate的抛出了我这些神秘的错误:
错误NHibernate.Hql.Parser [(NULL)] - NoViableAltException(86 @ [])
错误NHibernate.Hql.Parser [(NULL)] - MismatchedTreeNodeException (72!= 3)
这是NHibernate LINQ提供程序不支持的方案吗?关于我如何能够重构此查询来解决它的任何想法?
这工作(在这个意义上没有NH错误),但查询它会产生这样的容貌:'SELECT * FROM文件在哪里(选择TOP 1嗒嗒等等等等)不是空的。不过,我需要以'= 1'结束。但是这几乎回到了我原来的查询和错误。 – Ragesh 2013-03-04 17:28:03