나는 거의 같은 코드가 있습니다. 나는 Method가 list 요소에 접근 할 수 없다고 생각한다. 디버깅 할 때 변수 값 대신에 다음과 같은 메시지가 있습니다. "이전 기능 평가 시간이 초과 되었기 때문에 기능 평가가 사용되지 않습니다. 기능 평가를 다시 사용하려면 실행을 계속해야합니다". 또는 LazyInitialization 예외 "프록시를 초기화 할 수 없습니다 - 세션 없음". NHibernate 세션 또는 다른 문제가 있습니까? 어떻게 해결할 수 있습니까? 메서드가 너무 많은 시간이 걸리고 가능한 한 빨리 결과를 반환해야하기 때문에 메서드가 별도 스레드에 있습니다.NHibernate에 + 스레드
0
A
답변
1
메서드가 초기화되지 않은 속성에 액세스하려고하기 때문에 LazyInitialization 예외가 발생합니다. 기본적으로 NH 협회는 게으르며로드되므로 NH는 세션에서 데이터를로드하려고 시도합니다. 물론 그 시간까지는 오래 동안 사라져 버렸습니다.
몇 가지 옵션 : '게으른 = false'로
- 열망로드는 수동으로 로딩 할 . 엔티티를 얻은 후에는 속성에 액세스하여로드되었는지 확인하거나 연결에 NHibernateUtil.Initialize()를 사용합니다.
- 은 definitly DB를 액세스 코드를보고 도움이 될이 http://trentacular.com/2009/08/how-to-use-nhibernate-lazy-initializing-proxies-with-web-services-or-wcf/
+0
FetchMode를 쿼리에서 바꾸는 것이 정말 도움이되었다. 고마워. –
관련 문제
- 1. NHibernate에 질문 - 유창함 NHibernate에
- 2. NHibernate에 2.0을 사용하여 NHibernate에
- 3. NHibernate에
- 4. NHibernate에
- 5. NHibernate에 -
- 6. NHibernate에
- 7. NHibernate에
- 8. NHibernate에
- 9. 난 그냥 NHibernate에 함께 시작 해요 NHibernate에
- 10. 얻기 예외 내가 NHibernate에 새로운 오전 NHibernate에
- 11. NHibernate에 세션이 내가 NHibernate에 비교적 새로운 오전
- 12. 유창함 NHibernate에 : 재산을 내가 유창함 NHibernate에 문제가있는
- 13. NHibernate에 구성
- 14. 사용이 NHibernate에
- 15. NHibernate에 매핑
- 16. 은 NHibernate에
- 17. NHibernate에 문제
- 18. NHibernate에 내부
- 19. 은 NHibernate에
- 20. NHibernate에 : 예외
- 21. 가 NHibernate에
- 22. NHibernate에 캐스케이드
- 23. 내가 NHibernate에
- 24. NHibernate에 캐스케이드
- 25. NHibernate에 SessionFactory에
- 26. 조립 NHibernate에
- 27. NHibernate에 QUERYOVER
- 28. 가 NHibernate에
- 29. 결과가 NHibernate에
- 30. NHibernate에 3 Linq에 - 내부 내가 NHibernate에 3 CR을 테스트하고 있습니다
같은 작업을 수행합니다. 하지만 내 생각에 세션은 더 이상'Method'에서 사용할 수 없습니다. 가장 좋은 선택은'Create'에서 필요한 모든 데이터를 열렬히 가져오고 세션에서 객체를 분리 (제거)하는 것입니다. – Firo
더 나은 것은 새 스레드에서 세션을 가지고 거기에 객체를로드하는 것입니다. –
Firo : 나는 세션에서 Method의 인수로 사용하는 객체를 분리하려고 시도했지만 도움이되지 않는 것처럼 보입니다. Ladislav Mrnka : 코드 중복으로 이어질 것이고 이미 수천 건의 db 호출을 추가했기 때문에 이것이 최선의 방법은 아니라고 생각합니다. 나는 그것이 도움이 될 수 있다고 생각하지만, 더 나은 해결책을 찾는 것이 더 낫다. ( –