为什么.AsTableServiceQuery()在Azure表存储中的$ top时遵循Continuation Token

时间:2012-08-13 00:14:31

标签: c# azure azure-table-storage

我在Azure调用中使用.AsTableServiceQuery()来获取数据。

我还使用$top获取有限的数据,比方说100

问题是,查询返回100个结果,并且还会给出x-ms-continuation-NextPartitionKey标记。 同时.AsTableServiceQuery()并不关心已经有100个结果,并且在继续令牌之后直到到达表的末尾。以后哪些数据和大量HTTP调用都会超时。

是否有其他方法可以使用$top过滤器

处理Continuation Token

1 个答案:

答案 0 :(得分:3)

持续令牌是典型的混淆来源。每当你发出$ filter或$ top时,最好是期望延续令牌。 $ top是另一种在表格上分页的方式。使用Linq Take(n)后跟.AsTableQuery()以您期望的方式工作。 Neil Mackenzie在他的描述性博客文章中提供了一个很好的样本。

CloudTableQuery<Song> cloudTableQuery =
(from entity in tableServiceContext.CreateQuery<Song>(“Songs”)
 select entity).Take(10).AsTableServiceQuery<Song>();