Get()之后急切加载关联

时间:2013-02-10 22:05:51

标签: nhibernate nhibernate-3

我正在尝试找到一种更好的加载关系的方法:

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 个答案:

答案 0 :(得分:1)

Get由映射驱动。如果它真的有意义,改变你的映射(但我不会这样做)。没有构造映射的运行时切换。

根据我的经验,在Get(id)期间更少的select语句不是问题...对于N + 1,你已经在你的问题中展示了更好的解决方案。

关于eagar装载的有趣读物:http://nhforge.org/wikis/howtonh/lazy-loading-eager-loading.aspx