检查Azure Table Storage 1.8是否存在行

时间:2013-01-18 19:03:39

标签: .net azure azure-table-storage

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

以下是SDK's documentation如何检索单个项目的示例:

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.");

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

旧的SDK也是如此:如果没有找到行,则抛出异常。但是有一处房产可以解决这个问题:

TableServiceContext.IgnoreResourceNotFoundException = true

但是这个选项隐藏在新SDK中的哪个位置?

2 个答案:

答案 0 :(得分: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。

答案 1 :(得分:2)

它似乎与我一直在SDK 1.8中的相同位置,但它已经在2.0版本的存储API中移动了。这是你正在使用的吗?

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

property you're looking for似乎仍在那里可用:)