跨多个数据库的事务(C#)

时间:2013-10-04 18:44:22

标签: c# .net oracle entity-framework transactions

我正在开发一个将更新多个数据库的应用程序(SQL Server 2008和Oracle 11g)。 TransactionScope似乎是确保更新始终正确提交的合理方式,但似乎安装MSDTC不是一个选项。将来,该应用程序也可能使用不支持分布式事务的数据源。

我花了很多时间试图想出另一个解决方案,但似乎没有任何效果。所有搜索都指向TransactionScope和分布式事务。

应用程序使用实体框架以C#编写。任何人都有任何建议,不需要升级到分布式交易?以下列出了我曾经无处可去的想法。

+ TransactionScope:无法使用MSDTC。未来的数据源可能不支持分布式事务。

+手动跟踪和回滚交易:我还没有找到在实体框架内执行此操作的好方法。

+队列/日志失败,因此可以由另一个进程重新提交:无法提供一般存储失败提交的好方法。还需要确保重新提交不会覆盖更新的数据。

1 个答案:

答案 0 :(得分:0)

@ThinkJet。相关链接是一个有趣的意见。就我而言,像所描述的那样,一个小小的失败并不是什么大不了的事。我们目前有其他的东西,试图保持所有这些系统同步(并不总是成功)。如果一个或两个事务确实失败,则应由这些过程接收。

阅读完这些评论后,我可能会尝试让这个库将数据写入自己的数据库。然后,将这些更改同步到其他源,以便其他应用程序可以看到更改。它会导致某些更新略有延迟,但即使这样也会比现在更好。