C # Свободный nhibernate вопрос - PullRequest
0 голосов
/ 08 февраля 2011

Я пытаюсь глобально отключить Fluent NHibernate функции отложенной загрузки , но даже после:

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

NHibernate в моем тестовом коде постоянно говорит следующее:

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

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

Я не хочу отмечать произвольные методы моих классов как виртуальные, если я отключил отложенную загрузку. У этого есть решение или, может быть, я делаю что-то не так?

1 Ответ

2 голосов
/ 08 февраля 2011

Если вы выключите отложенную загрузку, то Nhibernate попытается получить все связанные свойства (например, - класс Person имеет свойство Car Ассоциации), как только вы выберете человека из базы данных.

Чтобы заполнить свойство автомобиля, Nhibernate создает прокси-сервер класса person, наследуя класс person и переопределяя свойство Carpark.

Если, однако, свойство вашего автомобиля не является виртуальным, Nhibernate увидит, включена ли отложенная загрузка и не удалось ли загрузить свойство, однако это не относится к вашему приложению и, следовательно, является исключением.

Для легкого чтения: http://davybrion.com/blog/2009/03/must-everything-be-virtual-with-nhibernate/

...