Я только что обновил свой проект до NHibernate 3.0 и пытаюсь преобразовать некоторые из моих критериев в операторы LINQ. Кажется, все работает нормально, за исключением того, что новые операторы LINQ, похоже, не соответствуют правилам извлечения, которые я объявил в моих файлах сопоставления (используя FluentNHibernate).
Например:
public UserMap
{
Id(x => x.Id);
References(x => x.Course).Fetch.Join();
}
Теперь я опрашиваю всех пользователей так:
var users = Session.Query<User>().ToList();
Я бы ожидал, что возвращенной коллекцией будут все пользователи в базе данных с их нетерпеливо загруженными свойствами курса, а это именно то, что я получу при использовании операторов Criteria. Но при использовании поставщика LINQ запрос, созданный NH, не включает объединение в таблице курсов, поэтому все курсы должны загружаться лениво. Ожидается ли такое поведение? Если так, как я могу заставить NHibernate соблюдать правила извлечения, объявленные в сопоставлениях?