2011-01-28 3 views
7

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

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

Приветствие

+0

В чем проблема с наличием прокси-объектов? –

+1

Передача объекта с использованием WCF не будет работать, например. – Yhrn

ответ

4

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

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

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

+0

@Yhrn - Извините, парень, не может найти нить на NHUsers, чтобы сделать с кем-то спрашивающим, будет ли это в NH3 или будущих версиях. Однако выяснилось, что вы можете получить свойства, если вы включите их в проекцию. – Phill

0

Вы можете использовать этот 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 и по-прежнему используют прокси.

+1

Извлечение свойств в вашей ссылке связано с отношениями, а не с определенными столбцами. Например, «ленивая загрузка/загрузка» содержимого «содержимого» «сообщения». Yhrn говорит о http://ayende.com/blog/4377/nhibernate-new-feature-lazy-properties, который в настоящее время не поддерживается ничем, кроме HQL. – Phill

+0

Вы правы Филлом. Я прочитал вопрос слишком быстро и ответил неправильно. Благодарю. –

+0

@Phill Я считаю, что вы правы и что ответы на мои вопросы просто «нет» (по крайней мере пока, кто знает, какие будущие выпуски могут принести). Если вы уверены в этом, не стесняйтесь конвертировать свой комментарий в ответ, и я соглашусь с ним. – Yhrn