我相信这是开发存储中的一个错误。我查看了 ListTables(prefix) 的代码,这就是我发现的(仅粘贴 ListTablesSegmentedImplCore() 方法的一部分):
if (prefix != string.Empty)
{
// Append Max char to end '{' is 1 + 'z' in AsciiTable
string uppperBound = prefix + '{';
query = query.Where((table) => table.TableName.CompareTo(prefix) >= 0 && table.TableName.CompareTo(uppperBound) < 0);
}
所以发生的事情是构造了一个查询,它类似于:
http://[您的开发存储表端点]/devstoreaccount1/Tables()?$filter=(TableName ge 'a') and (TableName lt 'a{')
现在我们知道开发存储在后台使用 SQL Server 进行数据存储。如果我接受这个查询并针对那个 SQL Server 数据库执行它,我没有得到任何结果:
SELECT TOP 1000 [AccountName]
,[TableName]
,[LastModificationTime]
,[ServiceMetadata]
,[Metadata]
,[SchemaXml] FROM [DevelopmentStorageDb201206].[dbo].[TableContainer] Where [TableName] >= 'a' and [TableName] < 'a{'
我想,在此期间,您需要最终进行过滤。另外请注意,我们在很久以前就在开发存储中发现了另一个错误,它与表的延续令牌有关。当您列出表并且您的存储帐户中有超过 1000 个表时,在开发存储中获取表时您不会取回继续令牌。
希望这可以帮助。