DocumentDb事务作为外部事务范围的一部分

时间:2015-08-05 08:11:24

标签: c# .net transactionscope azure-cosmosdb

有没有办法让DocumentDb交易成为C#外部交易的一部分?

这是来自here的后续问题,下面的事务3中的失败应该回滚任何documentDb更新。

using (var scope = new TransactionScope)
{
//first transaction

//write to document db

//third transaction
}

1 个答案:

答案 0 :(得分:2)

我通过以下方式在与DocumentDb交互的DocumentDbRepository上实现IEnlistmentNotification来解决这个问题 -

  1. 实施界面
  2. 在构造函数中使当前实例成为Transaction.Current的一部分。 (或者在任何更新之前,如果使用依赖注入,则事先创建对象。在事务期间,也可以考虑使用Lazy<>进行构造函数调用。
  3. 在创建/更新期间 - 保存旧文档,或创建新对象的事实并保存selfLink。
  4. 如果调用了Rollback,请对上述步骤中保存的信息采取纠正措施。
  5. PS - 如果有人有兴趣,我可以分享伪代码,请发表评论。