我正在尝试找到一种更好的加载关系的方法:
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);
答案 0 :(得分:1)
Get由映射驱动。如果它真的有意义,改变你的映射(但我不会这样做)。没有构造映射的运行时切换。
根据我的经验,在Get(id)期间更少的select语句不是问题...对于N + 1,你已经在你的问题中展示了更好的解决方案。
关于eagar装载的有趣读物:http://nhforge.org/wikis/howtonh/lazy-loading-eager-loading.aspx