我正在运行一个多阶段的流程,它需要更新一个给定的实体(在流程开始之前已经存在)* 多次 *。在后续更新之间有一段时间,在此期间,其他各方应该观察实体的中间状态。他们不应该在流程中更改实体,但我不能假设他们真的不会。
因此,在开始时,我检索现有实体(tableClient.GetEntityIfExistsAsync<MyEntity>
),并注意到它的ETag
。
然后,当我第一次更改实体时,我使用之前的ETag值来确保我仍然使用原始实体,并且没有人在tableClient.UpdateEntityAsync(myUpdatedEntity, originalETag)
之间更改它。
到目前为止一切顺利,但是当我想再次更改实体时该怎么办?我没有更新的ETag,如果我再次尝试检索它以获得新的ETag,我会冒着在更新和查询之间它被更改的风险。
那么,有没有什么方法可以在更新实体时(原子地)获得实体的(更新的)ETag呢?
2条答案
按热度按时间eqfvzcg81#
您应该能够在响应头中获取
ETag
的最新值。请尝试以下操作:
字符串
参考:https://learn.microsoft.com/en-us/dotnet/api/azure.response?view=azure-dotnet .
tktrz96b2#
您可以使用TableClient类提供的UpdateValidityAsync方法。更新实体后,该方法将返回更新后的实体沿着新的ETag值。
字符串