Стремительно загружая ассоциацию после Get()
Я пытаюсь найти лучший способ загрузить отношение, чем это:
result = session.Get<Author>(id);
Course course = result.Courses.FirstOrDefault();
Я могу сделать это с помощью QueryOver API следующим образом:
result = session.QueryOver<Author>()
.Where(item => item.Id == id)
.Fetch(item => item.Courses).Eager
.SingleOrDefault();
Я предполагаю, что это сгенерирует тот же SQL, но это слишком многословно.
Есть ли способ сделать что-то вроде ниже?
session.Fetch(result, author => author.Courses);
1 ответ
Решение
Get управляется картированием. Если это действительно имеет смысл, измените ваше отображение (но я бы этого не делал). Нет переключателя времени выполнения построенного отображения.
По моему опыту, несколько дополнительных операторов select во время Get(id) не проблема... А для N + 1 вы уже показали лучшее решение в своем вопросе.
Интересное чтение о загрузке Eagar: http://nhforge.org/wikis/howtonh/lazy-loading-eager-loading.aspx