2010-05-31 105 views
1

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

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

回答

3

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

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

其中10是第一个结果指标和20个页面大小(它会返回20 Post秒的阵列)

您也可以定义标准,例如获取后的第一个100篇评论:

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

也可以在“页的”使用batch fetching(对应于HasManyAttribute的BatchSize属性)集合,但此批大小是固定的,所以它不像普通的分页方式那么灵活。

+0

谢谢Mauricio。你能否澄清一下,如果这可以被整合到标记。我的意思是,如果我使用HasMany属性,我如何防止从数据库加载所有收集内容? – Alex 2010-06-01 04:13:35

+0

我不明白'markup'是什么意思。 HTML? – 2010-06-01 04:34:23

+0

我添加了一些关于批量抓取的信息,但我已经概述了普通的分页,包括集合分页。 – 2010-06-01 04:35:25