NHibernate 3 ленивых свойства и активные запросы - PullRequest
7 голосов
/ 28 января 2011

Я использую NHibernate 3.0.0 и новую функцию lazy properties.Тем не менее, в некоторых запросах я хочу загружать свойства и хотел бы, чтобы запрос приводил к экземплярам без прокси-объектов.Я также предпочитаю использовать поставщика LINQ или QueryOver.Итак, два моих вопроса, связанных с этим:

  1. Я знаю, что в HQL можно добиться быстрой загрузки свойств с помощью «извлечения всех свойств», но возможно ли это сделать с помощью поставщика LINQ или QueryOver?
  2. Если я выполняю HQL-запрос с «извлечением всех свойств», сущности в результате действительно загружаются с нетерпением, но они все еще проксируются.Есть ли способ избежать этого?

Приветствия

Ответы [ 2 ]

4 голосов
/ 08 июня 2011

Для вопроса 1 : Ответ отрицательный: «получить все свойства», как описано в http://ayende.com/blog/4377/nhibernate-new-feature-lazy-properties, в настоящее время поддерживается только в HQL.

Я помню, что видел где-то в NH Google Discussions, я не могу найти ветку. Обновлю ответ, если смогу найти сегодня. Но в текущей версии 3.1 он только на HQL.

По вопросу 2 : я не знаю, есть ли способ избежать этого, я обычно преобразовываю их в DTO и сериализую DTO, а не NH Poco, при использовании WCF. Ссылка Леонардо выглядит интересной и может помочь.

0 голосов
/ 07 июня 2011

Вы можете использовать это http://davybrion.com/blog/2009/03/must-everything-be-virtual-with-nhibernate/ для отключения отложенной загрузки ваших классов (без прокси)
Вы можете использовать это http://nhibernate.info/doc/nh/en/index.html#querycriteria-dynamicfetching для быстрой загрузки ваших свойств
Или вы можете попробоватьэто http://www.timvasil.com/blog14/post/2008/02/WCF-serialization-with-NHibernate.aspx и по-прежнему использовать прокси.

...