2013-02-10 109 views
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); 

回答

1

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

从我的经验来看,Get(id)期间的select语句不是问题...而对于N + 1,您已经在您的问题中显示出更好的解决方案。

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