我正在开发一个将更新多个数据库的应用程序(SQL Server 2008和Oracle 11g)。 TransactionScope似乎是确保更新始终正确提交的合理方式,但似乎安装MSDTC不是一个选项。将来,该应用程序也可能使用不支持分布式事务的数据源。
我花了很多时间试图想出另一个解决方案,但似乎没有任何效果。所有搜索都指向TransactionScope和分布式事务。
应用程序使用实体框架以C#编写。任何人都有任何建议,不需要升级到分布式交易?以下列出了我曾经无处可去的想法。
+ TransactionScope:无法使用MSDTC。未来的数据源可能不支持分布式事务。
+手动跟踪和回滚交易:我还没有找到在实体框架内执行此操作的好方法。
+队列/日志失败,因此可以由另一个进程重新提交:无法提供一般存储失败提交的好方法。还需要确保重新提交不会覆盖更新的数据。
答案 0 :(得分:0)
@ThinkJet。相关链接是一个有趣的意见。就我而言,像所描述的那样,一个小小的失败并不是什么大不了的事。我们目前有其他的东西,试图保持所有这些系统同步(并不总是成功)。如果一个或两个事务确实失败,则应由这些过程接收。
阅读完这些评论后,我可能会尝试让这个库将数据写入自己的数据库。然后,将这些更改同步到其他源,以便其他应用程序可以看到更改。它会导致某些更新略有延迟,但即使这样也会比现在更好。