Я пытаюсь написать связанный подзапрос в, где положение так:Как подзапрос NHibernate в Where where с LINQ?
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 бросает мне эти загадочные ошибки:
ERROR NHibernate.Hql.Parser [(NULL)] - NoViableAltException (86 @ [])
ERROR NHibernate.Hql.Parser [(NULL)] - MismatchedTreeNodeException (72! = 3)
Это неподдерживаемый сценарий с поставщиком NHibernate LINQ? Любые идеи о том, как я могу реструктурировать этот запрос, чтобы обойти его?
Это работает (в том смысле, что не будет никаких ошибок NH), но запрос он генерирует выглядит следующим образом: 'выбрать * из документа, где (выберите TOP 1 мля бла-бла) не является нулевым'. Однако мне нужно, чтобы это закончилось с '= 1'. Но это в значительной степени связано с моими первоначальными запросами и ошибками. – Ragesh