Подзапрос nHibernate без сбора

Например:

Tree treeAlias = null;

var nonRottenApples = QueryOver.Of<Apple>()
   .Where(a => !a.IsRotten)
   .Where(a => a.Tree.Id == treeAlias.Id)
   .Select(x => x.Id); //  <- optional

return NHibernateSession.QueryOver(() => treeAlias)
   .Where(t => t.Id.IsIn(ListOfTreeId))
   .WithSubquery.WhereExists(nonRottenApples)
   .List();

Как SubQuery не собирается в Apple? Я исследую разные места, но не нахожу результатов для своего вопроса. Все результаты являются коллекциями.


person paulo victor    schedule 14.10.2014    source источник
comment
Грасас Андрей! Больше ... Apple нет в списке. Пример: public class Tree {AppleDTO public virtual da Apple} // получить определение отношения OneToOne   -  person paulo victor    schedule 14.10.2014


Ответы (1)


Моя интерпретация вашего вопроса заключается в том, что вы пытаетесь запросить деревья, на которых нет гнилых яблок.

Я верю, что это сработает:

 var rottenTreeIds = QueryOver.Of<Apple>()
                             .Where(apple => apple.IsRotten)
                             .Select(a => a.Tree.Id);


 return NHIbernateSession.QueryOver<Tree>()
                         .Where(t => t.Id.IsIn(ListOfTreeId))
                         .WithSubquery.WhereProperty(t => t.Id).NotIn(rottenTreeIds)
                         .List();
person Andrew Shepherd    schedule 14.10.2014