4

我读过 azure 表存储查询最多提供 1000 个实体,我们必须使用延续令牌来获取下一组实体。我只是在寻找一种简单的方法来做到这一点。我要做的就是获取查询实际返回的所有实体,而不仅仅是 1000 个实体。我在这里阅读了@smarx 帖子 ,他提到了ExecuteAll方法,但这似乎已被弃用,因为我在存储客户端库中TableStorageDataServiceQuery找不到。TableStorageDataServiceQuery

我还找到了有关如何处理延续令牌以获取所有实体的这个msdn文档。我只想知道这是否是获取所有实体的最佳方式,我不需要任何分页。或者我可以使用任何 ExecuteAll esque 方法吗?

4

4 回答 4

7

像这样使用 AsTableServiceQuery:

var data = context.CreateQuery<SomeEntity>("table").AsTableServiceQuery<SomeEntity>().Execute();
于 2013-09-04T19:05:41.060 回答
1

这有点怪诞——而且不是一个很好的长期解决方案——但我为 Linqpad 分叉了 Azure 存储驱动程序,专门用于从表存储中获取所有记录。

https://github.com/ryan1234/AzureStorageDriver

获取它,构建它并使用 Linqpad 安装它。在 Linqpad 中反对它的示例查询:

var logs = (from log in SBEmailWorkerRole.ToList()
            select new {
                LogEntry = log.LogEntry,
                CreateDate = log.Timestamp.ToLocalTime()
            }).ToList();

logs.OrderByDescending(l => l.CreateDate).Dump("Logs");
于 2013-09-04T15:59:32.767 回答
0

查询表存储的方法有很多,但最简单的方法是创建一个 CloudTable 对象,创建一个 TableQuery 对象,然后在传入 TableQuery 对象的 CloudTable 对象上调用 ExecuteQuery。

http://www.bing.com/search?q=azure+table+storage+query&qs=n&form=QBRE&pq=azure+table+storage+query&sc=8-25&sp=-1&sk=&cvid=eb5a88d975df445ab665fbf5082fa7c8的第一个结果将采用您可以访问 http://www.windowsazure.com/en-us/develop/net/how-to-guides/table-services/,其中显示了如何执行此操作的示例。

于 2013-09-04T15:04:24.810 回答
-3

如果我对文件的理解是正确的,那是没有办法的。

请注意,即使记录数 < 1000 也可以返回延续令牌。在执行查询时始终检查延续令牌是个好主意。

另外,为什么要返回超过 1000 条记录?用例是什么?

于 2013-09-04T18:21:44.490 回答