DocumentDb在transactioncope中写入

我正在尝试使用DocumentDb写作交易的一部分,如下所示 –

using (var scope = new TransactionScope) { //first transaction //write to document db //third transaction } 

我观察到如果第三个事务失败,则不会回滚documentDb write,我仍然会在集合中看到该文档。 第一个事务(在这种情况下为NEventStore)完美回滚。 有谁知道DocumentDb是否支持TrnasactionScope。 如果我有嵌套交易怎么办?

谢谢!

编辑:所以看起来DocumentDb不支持TransactionScope,它对它们一无所知。 有没有办法让DocumentDb事务成为C#外部事务的一部分? 有没有人遇到过此用例?

编辑2:按照建议在此处跟进问题和答案

DocumentDB操作独立于TransactionScope 。 一旦操作返回,就完成了。 数据库服务对TransactionScope一无所知,也没有以任何方式连接到它。

在使用服务器端存储过程时,DocumentDB确实具有自己的事务范围。 您可以在存储过程中进行多个数据库调用,如果一切都成功,则存储过程退出时会进行隐式提交。 如果出现错误并抛出exception,则会对存储过程范围内对数据库执行的所有操作执行隐式回滚。

许多SQL用户不了解在事务不可用的地方该做什么。

您应该自己实现补偿逻辑或使用Windows Workflow Foundation等框架。 补偿逻辑与企业集成模式相关。 您还可以使用相关ID模式来检查是否已完成大操作。

当需要进行长时间运行的事务时,SQL人员以相同的方式管理大型操作。 https://www.amazon.com/Enterprise-Integration-Patterns-Designing-Deploying/dp/0321200683/ref=sr_1_1?ie=UTF8&qid=1480917322&sr=8-1&keywords=integration+patterns