在cassandra c#驱动程序中向后分页

时间:2016-04-28 18:09:37

标签: asp.net asp.net-mvc cassandra paging

我们尝试使用cassandra来存储数据库。我们无法在c#datastax驱动程序中向后/向前翻页。任何人都可以建议在MVC项目中分页结果的方法。

1 个答案:

答案 0 :(得分:5)

您可以使用C#驱动程序的manual paging feature来浏览Cassandra的结果。基本上它的工作原理如下:

  1. 在查询第一页之前,请在您的对帐单上调用SetAutoPage(false)SetPageSize(pageSize)即可获得第一页。
  2. 从Cassandra中选择结果的第一页。从查询返回的RowSet将具有PagingState属性。将该分页状态保存在某处(例如,在会话存储或Cookie中)
  3. 稍后,当您想要获取下一页时,请从存储它的位置检索PagingState
  4. 在您查询下一页之前,请在语句上调用SetAutoPage(false)SetPagingState(yourPagingStateFromStorage)以获取下一页。
  5. 对后续页面重复步骤2-4。
  6. 棘手的部分是向后分页 。如果你在你的UI中缓存你的分页结果(即每次点击一个按钮转到下一页/上一页时都没有刷新整页),这不是问题,因为向后翻页真的只是移动向后浏览已经查询并缓存的数据(可能在JavaScript代码中的数组中)。

    如果您每次有人点击浏览结果时都会进行整页刷新,那么您需要保留所有页面中的PagingState,直到您确定它们已完成分页(即商店) Session或cookie之类的多个分页状态值。这样,如果有人向后翻页,您只需查找该上一页的分页状态标记,并在查询中使用它。

    注意:如果您处于整页刷新状态,则可能还可以将分页状态作为查询字符串参数传递。例如,链接到下一页“/ some / page?pagingState = PAGING_STATE_FROM_ROWSET_CURRENTLY_DISPLAYED”,然后进行向后分页,只需执行与浏览器后退按钮相同的操作。