针对Azure表存储的同步分页

时间:2011-06-30 18:31:05

标签: azure pagination azure-storage azure-table-storage

我是使用Azure表存储的新手,但我能够将下面的代码放在一起,成功地允许我的查询接受用户指定的filterQuery(字符串) - 例如:(金额le 5000.00) - 并检索符合条件的所有行(实体)。

Dim sBuilder As New System.Text.StringBuilder
Dim query = MyBase.CreateQuery(Of cData)("CustomerData")
Dim userQuery = String.Format("(PartitionKey eq '{0}' and {1})", AppID, filterQuery)
sBuilder.AppendFormat(userQuery)
        query = query.AddQueryOption("$filter", sBuilder.ToString).AsTableServiceQuery().Take(50)
Dim results As List(Of cData) = query.Execute.ToList

我应该指出,这种允许用户指定过滤字符串的方式对我来说很关键,因为我使用的是一个在其中包含字典的泛型类,以便允许我的调用者传入任意数量的元素存储到给定实体中。因此,此解决方案允许用户驱动他希望查询的搜索方式,并且我的代码不必“了解”有关其自定义字段的任何内容。

现在我需要添加分页。我的理解是我正在使用的'Execute'方法处理你的分页,所以如果有7,000条符合条件的记录,我的代码将一直存在,直到检索/返回所有条目。但是,我希望允许我的用户指定他想要一次返回多少实体(最大结果),然后允许他使用延续令牌进行后续调用以获得下一批“匹配实体”。

关于如何实现这一目标而不会失去允许用户在简单字符串中指定搜索条件的能力的任何想法?

2 个答案:

答案 0 :(得分:0)

我认为你可以做查询.EndExecuteSegmented(query.BeginExecuteSegmented(...))

查看SmarxToDo的代码:http://blog.smarx.com/posts/todo-list-app-using-asp-net-mvc-and-windows-azure-tables

答案 1 :(得分:0)

您可能希望使用REST API(http://msdn.microsoft.com/en-us/library/dd179421.aspx)实现查询。您将从存储服务中获取XML响应,您可以解析它以创建对象集合。

相关问题