1

我试图找到比这更好的方法来加载关系:

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);
4

1 回答 1

1

获取是由映射驱动的。如果它真的有意义,请更改您的映射(但我不会这样做)。构造映射没有运行时切换。

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

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

于 2013-02-11T05:49:55.477 回答