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中的哪个位置?
答案 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似乎仍在那里可用:)