2011-11-02 1 views
1

아래와 같은 복합 id에 keyreference가 있습니다.nhibernate 복합 keyreference는 복수의 쿼리를 생성합니다.

테이블 ("parent"); compositeid() . keyreference (e => Obj, "sample");

이렇게하면 parent의 각 행에 대해 obj에 대해 별도의 쿼리가 생성됩니다. 이 문제를 해결하는 방법? 주로 keyreference를 위해 fetch startegies (내부 조인)를 제어하는 ​​방법은 무엇입니까?

도와주세요

답변

-2

키 참조 매핑을 조정할 수 있습니다. 가장 쉬운 방법은 lazyloading을 비활성화하는 것입니다.

그러나 join 대신 select를 사용합니다. 그러나 사용 NH 쿼리를 사용하여

var loaded = session.Query<Parent>() 
    .Fetch(c => c.Obj) 
    .ToList(); 

수첩에 가입 :는 Linq에이 QueryOver하지 않는 동안 열망 ​​가져 않는 것 같다. 이 작동하지 않습니다.

var loaded = session.QueryOver<Parent>() 
    .Fetch(c => c.Obj).Eager 
    .List(); 
+0

헤이,이 여전히 여러 쿼리를 실행합니다. – Thanigainathan

+0

첫 번째 쿼리는'SELECT obj.Id, parent. * FROM parent join obj' 또는'SELECT obj. *, parent. * FROM parent join obj' 또는'SELECT parent. * FROM parent'처럼 보이나요? – Firo

+0

이 답변이 왜 받아 들여 졌는지 이해할 수 없습니다. 그것은 단순히 잘못되었습니다. 문제는 * 게으른 로딩이 아니므로 게으른로드가 아니라는 것을 알려 주면 도움이되지 않습니다. (그리고'c.Lazy()'를 쓰는 것은 효과가 없습니다.) – Aaronaught

관련 문제