Да, предлагаемая стратегия состоит в том, чтобы по умолчанию ваши объекты использовали ленивую загрузку, а затем, когда вы хотите загружать их, вы изменяете свой запрос и указываете, что хотите, чтобы ваши дети загружались с нетерпением.
От того, как вы на самом деле реализуете энергичную загрузку, зависит, какой стиль запроса вы используете. (т.е. 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);
....