我想在寫相關子查詢的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