2013-08-21 2 views
0

입니다 :QueryOver 나는 다음을 수행하려고 해요 목록

var query = session.QueryOver<BaseEntity>() 
        .JoinAlias(x => x.FirstChild,() => FirstChildAlias) 
        .JoinAlias(x => x.SecondChild,() => SecondChildAlias) 
        .JoinAlias(() => SecondChildAlias.ListOfElementsChild,() => ListOfElementsChildAlias) 
        .Where(() => FirstChild.Text == "value 1") 
        .And(() => ListOfElementsChildAlias.Text =="value2"); 

가 어떻게 형식 목록 인 내부 자녀에 대한 제한을 할 수 있습니다!? "Value2"와 같은 Text 값을 가진 목록에 하나 이상의 하위 목록이있는 모든 BaseEntity 요소를 가져 오는 방법은 무엇입니까?

+2

확실하지,하지만 당신은 .WithSubquery.WhereExists에 시도이 유용 할 수 있습니다 http://stackoverflow.com/q/7742453를 제공 할 수 있습니다/1236044 – jbl

+0

@jbl이 옳습니다. 'exists' 서브 쿼리는 여러분이 필요로하는 것입니다. 방법에 대한 좋은 예를 보려면 [내 다른 답변 중 하나] (http://stackoverflow.com/a/7376077/221708)를 참조하십시오. –

+0

사실 Exists를 시도했지만 작동하지 않았습니다! 원하는 결과로 일치하지 않는 데이터를 검색했습니다! 이 문제를 해결하기 위해 기준을 사용했으며 효과가있었습니다. – Ruba

답변

0

이 날 위해 일했다 상응하는 솔루션입니다 :

   var query = session.CreateCriteria<BaseEntity>("BaseEntity") 
            .CreateCriteria("BaseEntity.FirstChild", "FirstChild") 
            .Add(Restrictions.Eq("FirstChild.Text", firstChildTextValue)) 
            .CreateCriteria("BaseEntity.SecondChild", "SecondChild") 
            .CreateCriteria("SecondChild.ListOfElementsChild", "ListOfElementsChild") 
            .Add(Restrictions.Eq("ListOfElementsChild.Text", listOfElementsChildTextValue)) 
            .List<BaseEntity>(); 
관련 문제