Загрузить все объекты, прикрепленные к объекту (игнорировать ленивую загрузку) - PullRequest
5 голосов
/ 02 мая 2011

Интересно, есть ли способ сообщить NHibernate о необходимости загрузки всех данных из БД в граф объектов, независимо от того, установлено ли в файлах отображения lazy-loading значение true.Есть ли такая функция?

Ответы [ 2 ]

8 голосов
/ 02 мая 2011

Вы также можете указать нетерпеливую выборку в ваших критериях для выбранных коллекций:

session.CreateCriteria(typeof(Post))
.SetFetchMode("Comments", FetchMode.Eager)
.List();

Вы также можете комбинировать это с вызовами Future <> () для повышения производительности.

8 голосов
/ 02 мая 2011

Есть два варианта, которые мне известны:

Используйте NHibernateUtil класс

Например:

Order fromDb;
using (ISession session = SessionFactory.OpenSession())
{
    fromDb = session.Get<Order>(_order.Id);
    NHibernateUtil.Initialize(fromDb.Customer);
}

Это заставит нетерпеливую загрузкуCustomer сущность.

Используйте HQL fetch

Если вы используете HQL для извлечения ваших сущностей, просто используйте ключевое слово fetch, чтобы принудительно загружать:

from Order o
inner join fetch o.OrderLines
inner join fetch o.Customer
where o.Id = :id

В этом примере будут загружены OrderLines и Customer.

Подробнее здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...