以下是用于从azure表中获取数据的代码:
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConnectionString);
CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
TableServiceContext serviceContext = tableClient.GetDataServiceContext();
CloudTableQuery<Customer> partitionQuery =
(from e in serviceContext.CreateQuery<Customer>("Customer")
select e).AsTableServiceQuery<Customer>();
// Loop through the results, displaying information about the entity
foreach (Customer entity in partitionQuery)
{
CustomerList.Add(entity);
}
一切都很好。突然我发现,上面的呼叫不会返回任何东西。
它能够获得ServiceContext。我尝试使用"Fidler"
工具进行问题排查。实际上数据来自云表(我在Fidler的查询响应中看到)。但是当我迭代"partitionQuery"
对象时,它返回时没有数据。相同的代码适用于其他机器。使用的Azure SDK在其他计算机中也是相同的。任何人都可以帮忙吗?感谢。
更新:现在我正在使用新版本的Azure SDK。 (2012年10月)这可能是个问题吗?
答案 0 :(得分:1)
如果您使用的是2012年10月的Azure SDK,则需要更改:
TableServiceContext serviceContext = tableClient.GetDataServiceContext();
CloudTableQuery<Customer> partitionQuery = (from e in serviceContext.CreateQuery<Customer>("Customer")
select e).AsTableServiceQuery<Customer>();
到
TableServiceContext serviceContext = tableClient.GetTableServiceContext();
TableServiceQuery<Customer > partitionQuery = (from e in serviceContext.CreateQuery<Customer>(“Customer”)
select e).AsTableServiceQuery(serviceContext);
注意:请参阅more detailed list of breaking change。
另外,请确保您已包含Microsoft.WindowsAzure.Storage.Table.DataServices
命名空间。
如果您仍在观察意外行为,请提供一个小提琴跟踪(通过电子邮件),以便我们进一步调查。
答案 1 :(得分:0)
我遇到了同样的问题。当我指定分区键(或任何其他查询)时,它可以正常工作。
rangeQuery = new TableQuery<PhotoEvent>().Where(TableQuery.GenerateFilterConditionForBool("active", QueryComparisons.Equal, true));