2011-02-08 2 views
0

내가 비활성화 Fluent NHibernate게으른 로딩 기능을 전체적으로하려고하지만 이후에도 : ​​C# 능통 자 NHibernate 질문

NHibernate.InvalidProxyTypeException: 
The following types may not be used as proxies: 

XXXX: method YYYY should be 'public/protected virtual' 
     or 'protected internal virtual' 

I : 내 테스트 코드에서

LazyLoad.Never(); 
DefaultLazy.Never(); 

NHibernate 다음을 말하는 계속 게으른 로딩을 비활성화 한 경우 클래스의 임의의 메소드를 가상으로 표시하고 싶지 않습니다. 이것에는 해결책이 있는가 또는 나는 무언가를 잘못하고 있는가?

+0

같은 문제에 대한이 게시물이 회담 http://stackoverflow.com/questions/2278110/nhibernate-exception-method-add-should-be-public-protected-virtual : 일부 가벼운 독서를 들어

- 또는 - 보호하다 – Divi

답변

2

지연로드를 해제하면 Nhibernate는 데이터베이스에서 사람을 가져 오는 즉시 모든 연관 속성 (예 : - Person 클래스에는 Car 연관 속성이 있음)을 검색하려고 시도합니다.

자동차 속성 채우기 Nhibernate는 Person 클래스를 상속하고 Carpark 속성을 재정 의하여 Person 클래스의 프록시를 만듭니다.

그러나 자동차 속성이 가상이 아닌 경우 Nhibernate는 지연로드가 켜져 있는지 여부와 속성로드를 벗어날 수 있는지 여부를 확인합니다. 그러나 앱과 예외가 아니기 때문에 속성을로드하지 못할 수 있습니다. http://davybrion.com/blog/2009/03/must-everything-be-virtual-with-nhibernate/