Стремительно загружая ассоциацию после 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

Другие вопросы по тегам