4

わかりました、私はこれに負けています。このような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 .......)

誰かが私を正しい方向に向けてくれます

4

1 に答える 1

3

私自身 NH の初心者ですが、選言を作成してそれに条件を追加してから、選言を QueryOverWhere呼び出しに追加してみてください。

var disjunction = new Disjunction();
disjunction.Add(subQuery1);
disjunction.Add(subQuery2);
var query = Session.QueryOver<Lead>()
    .Where(disjunction);
于 2011-06-13T20:18:29.643 に答える