我希望能够为我的用户提供一个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关于如何避免这种情况是正确的),最简单的方法是首先运行查询来检查它是否真的存在。