Я предполагаю, что по умолчанию вы хотите отложенную загрузку, но иногда вы хотите загружать при необходимости. Если вы всегда хотите загружать (не рекомендуется), вы должны сделать это в сопоставлении вместо этого с помощью Not.Lazyload и выбрать стратегию выборки с помощью .Fetch ().
В противном случае вам придется использовать один из методов запроса в NHibernate, чтобы делать то, что вы хотите. Это можно сделать с помощью запроса HQL или запроса Linq и, возможно, запроса Criteria.
Вот запрос LINQ (он работает в 3.2, но не уверен, что он доступен раньше)
session.Linq<Project>()
.Fetch(p => p.Category)
.FetchMany(p => p.Gallery).FirstOrDefault();
Вот версия HQL
session.CreateQuery("SELECT p FROM Project p FETCH JOIN p.Category FETCH JOIN p.Gallery")
.UniqueResult<Project>();
Вот версия критерия
session.CreateCriteria<Project>("p")
.SetFetchMode("p.Category", FetchMode.Join)
.SetFetchMode("p.Gallery", FetchMode.Join)
.UniqueResult<Project>();