NHibernate делает то, что вы просили.В своем картографическом файле вы говорите NH не приводить ассоциации.Даже если вы привезете все связанные классы, у NH все еще есть свои заказы.
Если вы хотите, чтобы NHibernate стремился загрузить класс Make и Model из вашего автомобиля, у вас есть два способа сделать это:
- Если вам нужны только эти объекты время от времени, Измените ваш запрос ;
- Если вам всегда нужны эти объекты при работе с классом Car, Измените отображение ;
Первое легко.Вам просто нужно сделать JoinAlias, и NH доставит вам объекты следующим образом:
Car carAlias = null;
Model modelAlias = null;
Make makeAlias = null;
var query = Session.QueryOver<Car>(()=> carAlias)
.JoinAlias(()=> carAlias.Model, ()=> modelAlias)
.JoinAlias(()=> carAlias.Make, ()=> makeAlias)
.Where(()=> carAlias.Id == 101).SingleOrDefault();
Этот запрос принесет вам один раз Car и два связанных класса (Model и Make).
Второй вариант проще, чем первый, но будьте осторожны, он может привести к проблемам с выборами N + 1.
Перейти к отображению, в котором вы установили модель, а затем сделать и изменитьthe lazy = "false".
Теперь, каждый раз, когда вы выбираете объект Car, Модель и Марка будут вместе.Это решение влияет на другие запросы, основанные на сопоставлении файлов.
Надеюсь, это поможет вам!