【发布时间】:2011-06-29 19:58:13
【问题描述】:
我只是想知道是否在加载包含集合的实体时,例如如果您可以定义要返回多少 cmets,则可以包含 0 -> n 评论的帖子。
目前我有这个:
public IList<Post> GetNPostsWithNCommentsAndCreator(int numOfPosts, int numOfComments)
{
var posts = Session.Query<Post>().OrderByDescending(x => x.CreationDateTime)
.Take(numOfPosts)
.Fetch(z => z.Comments)
.Fetch(z => z.Creator).ToList();
ReleaseCurrentSession();
return posts;
}
有没有一种方法可以在评论中添加 Skip 和 Take 以允许在集合上实现一种分页功能,这样您就不会最终加载很多不需要的东西。
我知道延迟加载,但我真的不想使用它,我正在使用 MVC 模式并希望我的对象从加载的存储库中返回,以便我可以缓存它们。我真的不希望我的观点导致选择语句。
解决这个问题的唯一真正方法是不对 cmets 执行提取,而是对评论执行单独的 Select,以按创建日期时间排序,然后选择前 5 个,然后将返回的结果放入 Post 对象?
对此的任何想法/链接将不胜感激。
谢谢,
乔恩
【问题讨论】:
-
我想你所追求的加入对于 NHibernate 来说太复杂了,它需要知道如何在帖子和 cmets 上使用 TOP 作为两个单独的子选择,并且然后加入他们
标签: nhibernate fluent-nhibernate