CastleProject ActiveRecord是否支持分页?我只需要加载现在在屏幕上看到的数据。如果我使用[HasMany],它将立即或在第一次调用时作为整体加载(如果lazy属性为true)。但是我只需要前100条记录(然后可能是100条下一条记录)。
另一个问题是如何只加载100个项目。如果集合太大,如果我们不断加载越来越多的项目,内存就会达到极限。
答案 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属性)来“收集”集合,但此批量大小是固定的,因此它不像普通的分页方法那样灵活。