我想能够提供一个UPDATE方法给我的用户将更新他们指定的记录基于RowKey但它不会添加它,如果RowKey他们通过并不存在。我不希望我的更新做一个添加,如果实体不存在
我的推理是,如果他们错误地发送了一个无效的RowKey,我不希望他们在不知不觉中结束了一个新的实体,而更新了他们打算首先更新的实体。
这里是我的代码的要点(但添加/插入,如果它不存在的实体):
' p below is the entity obj (Inherits from TableServiceEntity)
' PartitionKey and RowKey are set to values of entity to update
MyBase.AttachTo(_tableName, p)
MyBase.UpdateObject(p)
MyBase.SaveChangesWithRetries(Services.Client.SaveChangesWithOptions.Batch)
我的问题是,我期待的SaveChanges执行时得到一些异常抛出没有找到匹配PK和RK的实体。相反,添加了新PK,RK组合的实体。
我该如何构造我的代码,以便只有更新完成,并且没有添加如果PK,RK不存在?
如果找不到要更新的实体(“处理此请求时发生错误”,并且Source字段设置为“Microsoft.WindowsAzure.StorageClient”),则SaveChangesWithRetries现在会引发看似非常普遍的异常。 。然而,我之后的关键信息是在InnerException中,您发现状态码= 404(ResourceNotFound)和Source =“System.Data.Services.Client .:这是因为我们试图更新的实体未找到。因此,我在捕捉到的地方添加了一个try catch – Hjalmar 2012-03-10 07:46:02