MongoDB交易?

Arn*_*psa 29 .net transactions mongodb norm

在.NET中使用MongoDB和NoRM.

让我感到困惑的是 - 没有交易
(不能只是说MongoConnection.Begin/EndTransaction或类似的东西).

我想在出现故障时使用工作单元模式和回滚更改.

如何通过ITransaction丰富我的存储库还有一个干净的方法吗?

mdi*_*olf 29

MongoDB不支持复杂的多文档事务.如果这是你绝对需要的东西,它可能不适合你.

但是,在大多数情况下,我们发现复杂的交易不是必需的.MongoDB中的所有操作都是单个文档上的原子操作,并且我们支持很好的更新修饰符,这使得需要事务的许多操作易于实现(并且快速).

  • 这个答案已经过时了.MongoDB现在支持多文档ACID事务.https://www.mongodb.com/blog/post/mongodb-multi-document-acid-transactions-general-availability (5认同)

rys*_*sov 20

确实,MongoDB不支持开箱即用的事务,但您可以自己实现乐观事务.它们适合工作单位.我在GitHub上写了一个java示例和一些解释,因此您可以轻松地在C#中重复.

  • 这是一个很好的例子.遗憾的是它没有以这种方式在MongoDB中实现,即使是可切换的抽象/插件. (2认同)

Gri*_*nik 7

从 v4.0 开始,MongoDB 支持多文档 ACID 事务。通过快照隔离,事务提供全局一致的数据视图,并强制执行全有或全无执行以维护数据完整性。有关更多信息,请参阅https://www.mongodb.com/transactions

在 4.2 中,MongoDB 还将支持分片事务。

在这篇博文中,我还概述了我们的多文档 ACID 事务之旅,以防您对历史和我们的推理感兴趣。