NHibernate QueryOver с подзапросом Or - PullRequest
4 голосов
/ 14 июня 2011

Хорошо, я проигрываю в этом. У меня есть запрос NHibernate, который выглядит примерно так

  var subQuery = QueryOver.Of<Lead>()
            .Where(x => x.Client == user.Client)
            .And(x => x.LeadType == leadType && x.LeadType != LeadTypeEnum.Self)
            .Select(Projections.Distinct(Projections.Id()));

Я использую это

  var query = Session.QueryOver<Lead>()
            .WithSubquery.WhereProperty(x => x.Id).In(subQuery);

Это производит то, что мне нужно

Where lead.id in (select Id from .......)

Однако мне нужно добавить еще один подзапрос. Легко сделать, как указано выше, но мне нужно, чтобы получить следующее

Where lead.id in (select id from .....)
or lead.id in (select id from .......)

Проблема в том, что я всегда получаю следующее

Where lead.id in (select id from .....)
and lead.id in (select id from .......)

Может ли кто-нибудь указать мне правильное направление, чтобы получить Или , пожалуйста

1 Ответ

3 голосов
/ 14 июня 2011

Я новичок в NH, но вы можете попробовать создать дизъюнкцию и добавить к ней условия, а затем добавить дизъюнкцию к вызову QueryOver Where.

var disjunction = new Disjunction();
disjunction.Add(subQuery1);
disjunction.Add(subQuery2);
var query = Session.QueryOver<Lead>()
    .Where(disjunction);
...