2016-12-31 1 views
0

я написал запрос в NHibernate, как показано ниже:Как я могу получить список вместе со списком ребенка, где список ребенок, имеющий какое-либо условие в NHibernate

var queryResult = CurrentSession.QueryOver() 
           .Where(r => r.StatusId == 1) 
           .JoinQueryOver(a => a.ActorList) 
           .Where(s=>s.IsActor==1) 
           .List() 
           .Distinct() 
           .ToList(); 

Я пытаюсь получить только Where(s=>s.IsActor==1), но Попадая отчеты Where(s=>s.IsActor==0) также ...

Как я могу получить только IsActor==1 записей?

Заранее спасибо

+0

Должно ли быть Queryover? Не могли бы вы использовать LINQ? –

+0

он должен быть только для запроса –

+0

Может быть проще просто запустить два запроса здесь: один для объектов верхнего уровня и другой для связанных коллекций ... –

ответ

0

Вы должны указать предикат в соединении, так что она применяется к присоединиться не к вершине, где:

(будет выглядеть как ...LEFT JOIN actor on actor.Id = p.ActorId AND IsActor = 1)

Actor actorAlias = null; 
var queryResult = CurrentSession.QueryOver() 
        .Where(r => r.StatusId == 1) 
        .Left.JoinQueryOver(r => r.ActorList,() => actorAlias, a => a.IsActor==1) 
        .List() 
        .Distinct() 
        .ToList(); 
Смежные вопросы