使用SDK 1.8对Azure表存储。net客户端进行了彻底的重新设计。使用新的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.");
根据示例,retrievedResult。如果没有找到行,结果应该为空。但实际上不是这样的,作为表。
对于旧SDK也是如此:如果没有找到行,则抛出异常。但是有一个属性可以关闭这个:
TableServiceContext.IgnoreResourceNotFoundException = true
但是这个选项在新SDK中隐藏在哪里?
如果您正在使用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
它似乎在我的SDK 1.8中始终处于相同的位置,但它已在2.0版本的存储API中移动。你用的是这个吗?
Microsoft.WindowsAzure.StorageClient。TableServiceContext已经移动到Microsoft.WindowsAzure.Storage.Table.DataServices.TableServiceContext。
您正在寻找的属性似乎仍然可用:)