如何从azure表存储查询中获取超过1000个实体?

时间:2013-09-04 13:47:59

标签: c# azure azure-storage azure-table-storage

我已经读过azure表存储查询最多可以提供1000个实体,我们必须使用continuation令牌来获取下一组实体。我只是想找一个简单的方法来做到这一点。我想要做的就是获取查询应该实际返回的所有实体,而不仅仅是1000个实体。我看过@smarx帖子here  并且他在ExecuteAll中提到了TableStorageDataServiceQuery方法,但由于我无法在存储客户端库中找到TableStorageDataServiceQuery,因此这似乎已被弃用。

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

4 个答案:

答案 0 :(得分:6)

像这样使用AsTableService:

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

答案 1 :(得分: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/,其中显示了如何执行此操作的示例。

答案 2 :(得分:0)

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

答案 3 :(得分:-3)

如果我对文件的理解是正确的,那就无法做到。

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

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

相关问题