1

Azure Table Storage .NET 客户端使用 SDK 1.8 进行了全面重新设计。使用新的 SDK,我如何检查一行是否存在?

以下是SDK 文档中有关如何检索单个项目的示例:

TableResult retrievedResult = table.Execute(retrieveOperation);

// Print the phone number of the result.
if (retrievedResult.Result != null)
   Console.WriteLine(((CustomerEntity)retrievedResult.Result).PhoneNumber);
else
   Console.WriteLine("The phone number could not be retrieved.");

根据示例,如果未找到任何行,retrieveedResult.Result 应该为 null。但实际上情况并非如此,因为 table.Execute 如果没有找到任何行就会抛出异常。

旧 SDK 也是如此:如果未找到行,则会引发异常。但是有一个属性将其关闭:

TableServiceContext.IgnoreResourceNotFoundException = true

但是这个选项隐藏在新 SDK 的什么地方呢?

4

2 回答 2

4

如果您使用的是TableEntity概念,您可以尝试以下代码:

        CloudTable table = cloudTableClient.GetTableReference(tableName);
        TableOperation retrieveOperation = TableOperation.Retrieve<YourEntity>(partitionKey, rowKey);
        TableResult retrievedResult = table.Execute(retrieveOperation);
        YourEntity fetchedEntity = retrievedResult.Result as YourEntity;

如果实体不存在,您将 fetchedEntity 设为 null。

于 2013-01-19T04:28:19.900 回答
2

它在我的 SDK 1.8 中似乎一直在同一个位置,但它已经移到了存储 API 的 2.0 版本中。那是你用的吗?

Microsoft.WindowsAzure.StorageClient.TableServiceContext已移至Microsoft.WindowsAzure.Storage.Table.DataServices.TableServiceContext

您正在寻找的房产似乎仍然在那里可用:)

于 2013-01-18T19:23:10.347 回答