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



我希望能够为我的用户提供一个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不存在,我如何构建我的代码,以便只执行UPDATE而不执行ADD?

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

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

但我还没有真正尝试过。

与其在尝试更新不存在的项时捕捉错误(我相信breischl关于如何避免这种情况是正确的),最简单的方法是首先运行查询来检查它是否真的存在。

最新更新