我已经读过azure表存储查询最多可以提供1000个实体,我们必须使用continuation令牌来获取下一组实体。我只是想找一个简单的方法来做到这一点。我想要做的就是获取查询应该实际返回的所有实体,而不仅仅是1000个实体。我看过@smarx帖子here
并且他在ExecuteAll
中提到了TableStorageDataServiceQuery
方法,但由于我无法在存储客户端库中找到TableStorageDataServiceQuery
,因此这似乎已被弃用。
我还发现了这个msdn文档,介绍了如何处理连续令牌以获取所有实体。我只是想知道这是否是获取所有实体的最佳方式,我不需要任何分页。或者我可以使用任何ExecuteAll esque方法吗?
答案 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条记录?用例是什么?