2011-09-19 5 views
1

QueryOver (또는 CriteriaAPI)를 사용하여 다음과 같이 작성 하시겠습니까? 처음보기보다 더 복잡하고 미묘하다 - 당신은 QueryOver 인터페이스를 사용하는 경우FROM에 중첩 된 선택이있는 NHibernate QueryOver

select foo from (select 1 as foo) as bar 
+0

AIFAIK 기준 및 Queryover (기준 래퍼를) 절에서의 질문이 기운 다. 'select (as 1 as foo) from bar '처럼 – Firo

답변

0

이 실제로 완전히 명확하지 않다. NHibernate.Linq.LinqExtensionMethods.Query<T> 사용을 고려 :

session.Query<Person>().Select(p => p.Husband).Select(p => p.Name).ToList() 

는 SQL에 해당하는 당신에게 List<string>을 줄 것이다 :

select h.name from (select husband as h from person) as h 
+0

과 같은 smth에 의지해야한다. 실제 쿼리는 그보다 더 복잡하다. 나중에 중첩 된 선택을 피하기 위해 다시 작성된다. 나는 LinqExtensionMethods를 아직 사용하지 않았지만 꽤 재미있어 보입니다. 확실히 필요한 기능을 가지고있는 것처럼 보입니다. – Shagglez

+0

Linq는 표준 QueryOvers보다 조금 더 가깝습니다. 사용자 지정 가져 오기를 수행하는 데 어려움을 겪었습니다. 'session.QueryOver () .Fetch (p => p.Husband) .Eager()가 호출되는 동안'session.Query () .Where (p => p.Husband.Name == "Clive" .WhereRestrictonOn ... 등등 '이 당신이 기대하는대로 할 것입니다. – jelford

+0

지금까지 위에서 언급 한 것 외에 QueryOver로 쿼리를 구현하는 데는 별 어려움이 없었습니다. 그러나 이후로 쿼리를 간소화했습니다. 여러 필드에 대한 조인을 할 수 있습니다. – Shagglez

관련 문제