如果实体不存在,我不希望我的更新执行添加

时间:2012-03-09 16:56:04

标签: azure

我希望能够为我的用户提供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组合的实体。

我如何构建我的代码,以便只有UPDATE才能完成,如果PK,RK不存在则没有ADD?

2 个答案:

答案 0 :(得分:0)

我相信如果你调用AttachTo()的三个参数版本,你将获得所需的行为。

MyBase.AttachTo(_tableName, p, "*");

但我还没有尝试过。

答案 1 :(得分:0)

当您尝试更新并且不存在的项目时(我相信breischl关于如何避免这种情况)是正确的,而不是捕获错误,最简单的方法是运行查询以检查它是否确实存在第一