如何在Sitecore Content Hub中用CreateEntityScroller获取超100个资产?
解决方案
一、调整CreateEntityScroller的每页获取数量
CreateEntityScroller默认每页返回50条数据,但你可以通过修改查询的Take属性增大每页获取量,再循环调用MoveNextAsync()遍历所有分页,以此获取100条以上的资产。
代码示例
// 调整查询的每页条数(建议根据平台限制设置,一般最大可设为1000,具体以实际测试为准) query.Take(1000); // 创建实体滚动器,设置足够长的超时时间,避免大量数据处理时超时 var entityScroller = MClient.Querying.CreateEntityScroller(query, TimeSpan.FromMinutes(5)); // 循环遍历所有分页 while (await entityScroller.MoveNextAsync()) { // 获取当前页的资产列表 var currentPageAssets = entityScroller.Current.Items; // 处理当前页的资产(替换为你的业务逻辑) foreach (var asset in currentPageAssets) { // 示例操作:获取资产ID var assetId = asset.Id; // 后续业务处理... } }
二、突破10000条资产的限制
QueryAsync()确实存在10000条的硬限制,无法直接突破,但CreateEntityScroller没有总条数限制——它通过分页滚动的方式分批获取所有符合条件的资产,只要循环调用MoveNextAsync()直到返回false,就能获取全部数据。
注意事项
- Take值上限:Sitecore Content Hub通常对
Take的最大值有限制(一般为1000),若设置超过该值会被自动截断为平台允许的最大值,建议测试后选择合适数值,平衡请求次数和性能。 - 超时设置:滚动器的超时时间需根据数据总量调整,确保处理完所有分页前不会超时。
- 性能优化:处理大量资产时,建议批量处理业务逻辑,避免单条处理带来的性能损耗,同时避免短时间内发送过多请求给平台。
内容的提问来源于stack exchange,提问作者Dhanush S
相关产品推荐
相关产品推荐

