在ActiveRecord中分页

时间:2010-05-31 18:42:43

标签: .net castle-activerecord

CastleProject ActiveRecord是否支持分页?我只需要加载现在在屏幕上看到的数据。如果我使用[HasMany],它将立即或在第一次调用时作为整体加载(如果lazy属性为true)。但是我只需要前100条记录(然后可能是100条下一条记录)。

另一个问题是如何只加载100个项目。如果集合太大,如果我们不断加载越来越多的项目,内存就会达到极限。

1 个答案:

答案 0 :(得分:3)

是的,Castle ActiveRecord支持分页。除了NHibernate's API for paging之外,您还可以使用SlicedFindAll(),例如:

Post[] posts = Post.SlicedFindAll(10, 20);

其中10是第一个结果索引,20是页面大小(它将返回20 Post s的数组

您还可以定义条件,例如获取帖子的前100条评论:

Post post = ...    
Comment[] comments = Comment.SlicedFindAll(0, 100, Restrictions.Eq("Post", post));

您还可以使用batch fetching(对应于HasManyAttribute中的BatchSize属性)来“收集”集合,但此批量大小是固定的,因此它不像普通的分页方法那样灵活。