2014-10-14 2 views
0

Например:подзапрос 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(); 

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

+0

Graças Андрей! Маис ... Яблоко в списке. Пример: public class Tree {PublicDTO public virtual da Apple} // obtém e define relação é OneToOne –

ответ

0

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

Я считаю, что это будет работать:

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(); 
Смежные вопросы