我有存储过程,该过程仅基于Etag更新文档。
我已经获取了3种文档,更新了所有3种文档的某些属性。我正在尝试更新存储过程中的所有3个文档。但是在存储过程更新第3个文档之前,另一个用户更新了第3个文档。所以在这种情况下,我确实会出现并发错误。我可以在存储过程中获取文档,但是我不确定必须更新哪个属性,因为我不知道该属性是由我还是由存储过程中的其他用户修改的,因为它只是替换了文档。与文档需要更新的所有地方所使用的存储过程相同,因此我无法对其进行硬编码。
我该如何处理?
在实体框架代码优先方法中,我们确实为SQL 提供了DbUpdateConcurrencyException类,从中我们可以看到哪个属性被修改并采取相应的Action。Cosmos DB中是否提供类似于DbUpdateConcurrencyException的异常类?
我确实读过DocumentDB的第3部分– DocumentDB中的并发和DocumentDB –存储过程中的乐观并发,这两篇文章都告诉我们如何使用Etag处理乐观并发。