2011-06-13 4 views
4

Ok이 항목을 잃고 있습니다. 나는이Or 하위 쿼리가있는 NHibernate QueryOver

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())); 

같은 것을 보이는 NHibernate에 쿼리 나는이

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 .....) 
and lead.id in (select id from .......) 
을 얻고있는 다음

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

생성 할 필요가

을 얻기 위해 누군가가 올바른 방향으로 날 지점 수 또는하시기 바랍니다

답변

3

본인은 NH 초보자입니다.하지만 불일치를 만들고 조건을 추가 한 다음 QueryOver Where 호출에 이의를 추가 할 수 있습니다.

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

내가, 내가 얻을 그러나 비슷한 생각 오류 인수 1 : NHibernate.Criterion.QueryOver '에서 변환 할 수 없습니다 'to'NHibernate.Criterion.ICriterion ' – Tanzy

+1

'disjunction.Add (subQuery1.UnderlyingCriteria)'또는'disjunction.Add (subQuery1.DetachedCriteria)'와 같은 것을 시도해 봤나? –

+0

지금은 내 컴퓨터가 아니지만 메모리가 나를 지원한다면 똑같은 또는 비슷한 문제가 발생합니다. – Tanzy

관련 문제