如何从 Azure 表存储查询中获取 1000 多个实体

本文关键字:1000 获取 实体 查询 Azure 存储 | 更新日期: 2023-09-27 18:30:18

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

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

如何从 Azure 表存储查询中获取 1000 多个实体

使用 AsTableServiceQuery,如下所示:

var data = context.CreateQuery<SomeEntity>("table").AsTableServiceQuery<SomeEntity>().Execute();

这有点怪诞 - 不是一个很好的长期解决方案 - 但我专门分叉了 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");

查询表存储的方法有很多种,但最简单的方法是创建一个 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/其中显示了如何执行此操作的示例。

如果我对文档的理解是正确的,就没有办法做到这一点。

请注意,即使记录数<1000,也可以返回继续标记。最好在执行 queires 时始终检查延续标记。

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