【发布时间】:2022-05-23 20:34:53
【问题描述】:
我正在使用 .NET SDK 通过 DocumentDb API 实现乐观并发。
在几个地方我发现提到在强类型模型上使用ETag 是一个坏主意。
在这里明确:
https://www.google.hr/amp/s/peter.intheazuresky.com/2016/04/28/documentdb-revisited-part-3-concurrency-in-documentdb/amp/
即使是 github 上的官方示例也显示它使用 dynamic/Document 类而不是强类型类。
现在,我不明白为什么不在模型上存储ETag?
根据文档,ETag,就像其他资源属性(例外是id)只是get,并且总是由服务器专门更改。
参考:
https://docs.microsoft.com/en-us/azure/cosmos-db/documentdb-resources#system-vs-user-defined-resources
所以,如果我们将ETag 放在我们的模型上并且:
从数据库读取文档到具有
etag属性的强类型模型将其发送给客户端(为简单起见,我们忽略表示层
dtos)客户端更新并发回
我们将更新/替换发送到 cosmosdb(将
AccessCondition设置为etag从客户端获取并仍在模型属性之一中)
我很难找到那里的问题?
为什么要打扰dynamics/Document?
还是我遗漏了一些明显的东西?
【问题讨论】:
标签: azure azure-cosmosdb optimistic-concurrency