我们有几个表位于Azure存储表(非Azure SQL表)中,我无法找到一种简单的方法来计算表中的行数。
我试过调用.CreateQuery.Count(),但这只是返回:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
<code>InvalidInput</code>
<message xml:lang="en-US">One of the request inputs is not valid.
RequestId:c74f8b4c-4277-42f6-bb5d-0db187358e43
Time:2011-12-21T10:34:12.5379616Z</message>
</error>
答案 0 :(得分:9)
这是因为Table Service没有Count操作: http://msdn.microsoft.com/en-us/library/windowsazure/dd179423.aspx 如果您至少指定了一个分区键或更多标准,您可能(但我不是100%肯定)可以获得记录计数。
答案 1 :(得分:8)
如果您真的想要计算您需要进行分页请求的所有行。每个页面最多返回1000行。加载所有内存后,您可以执行简单的Linq Count()
。
您只能计算页数和最后一页的行号。这样可以节省大量内存。
但请注意,返回最多行的每个页面请求等于一个事务。性能方面,你可以将整个表格加载到内存中,这可能是“呃哦”。
示例代码链接:http://scottdensmore.typepad.com/code/Continuation.zip
答案 2 :(得分:0)
有一个工具可以为您获取表格大小或实体数量。 Azure Storage Manager