2010-12-29 2 views
1

나는 방금 nhibernate 3으로 마이그레이션했고 LINQ 구문을 사용했다. . 이제 다음과 같은 코드가 있습니다nhibernate LINQ 구문을 사용할 때 단일 조인 쿼리가 두 번 실행되는 이유는 무엇입니까?

IEnumerable<Team> team = Session.Query<Team>().Fetch(r=>r.Country); 

은 그래서 (선행에 가입 할 것을 나는이 아이가 각 레코드에 대해 개체를 필요로하는

그것은 쿼리를 결합하지만 난 NHibernate에이를 뽑아 실행 내가 잘못을하고있는 중이 야 그 프로파일과 그것의가 (정확히 같은 쿼리)를 두 번 쿼리를 실행하는 것으로 나타났다.

이 NHibernate에 새 버전의 버그인가, 아니면 거기에 뭔가있다? 또한

, 어떤 제안 이유를 이해하기 위해 디버깅하는 추가 방법 이 일이 일어나고 있습니다.

답변

3

가져 오기 또는 조인과 아무 관련이 없습니다.

팀에 IQueryable을 할당하고 있습니다. 따라서 매번 열거 (iterate, get count 등) 할 때마다 쿼리가 실행됩니다.

이것을 피하려면 .ToList()을 호출에 추가하면 실행되고 메모리 목록으로 변환됩니다.

+0

감사합니다. . 매력처럼 작동 – leora

+0

nt donig a tolist 뒤에는 이유가 있습니다. 열심히 객체를로드하는 것을 피하기를 원할 것입니다. 필요할 때로드하십시오. – Baz1nga

관련 문제