Как динамически загружать / загружать с помощью nhibernate? - PullRequest
2 голосов
/ 08 августа 2011

Есть ли способ динамической установки стратегии загрузки между двумя объектами во время загрузки?

Например, если у меня есть сущность Parent, у которой есть список Child сущностей, я могу захотеть загрузить сущность 'Parent' с загруженными потомками в некоторых ситуациях и нетерпеливо загружаться в других.

Есть ли способ сделать это? Кажется, что отображение подразумевает одно или другое.

1 Ответ

8 голосов
/ 08 августа 2011

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

От того, как вы на самом деле реализуете энергичную загрузку, зависит, какой стиль запроса вы используете. (т.е. Linq2NH, Критерии, HQL)

Например, с Linq2NH я думаю, что-то вроде этого:

session.Query<Parent>().Fetch(p => p.Child)...

С HQL вы бы использовали

получить

Как это:

from Parent as p left join fetch p.Child...

и, наконец, с Criteria API вы бы сделали что-то вроде этого:

var criteria = context.Session.CreateCriteria<Parent>();
criteria.SetFetchMode("Child", NHibernate.FetchMode.Eager);
....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...