Отношение не должно загружаться автоматически, если вы не отключите Ленивая загрузка или не укажите, что оно будет загружено в запросе.
Редактировать:
ОтветитьВаши вопросы в комментариях ниже.
1) Это сделано как часть запроса.Базовый пример использования QueryOver в NHibernate 3.0 будет выглядеть примерно так:
var result = Session.QueryOver()
.Fetch(x => x.Category).Eager
.Where(x => x.Price > 10)
.List();
Я думаю, с ICriteria это "SetFetchMode (" Category ", FetchMode.Eager)"
2) Если вы включитебез отложенной загрузки на карту для объекта, он всегда будет загружен.Поэтому я предлагаю вам стремиться к загрузке по каждому запросу, чтобы избежать возможности загружать массивную цепочку данных или загружать данные, которые вам на самом деле не нужны.