1

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

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

该应用程序是使用实体框架用 C# 编写的。任何人有任何建议,不需要升级到分布式事务?这是我所拥有的想法清单,这些想法无处可去。

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

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

+队列/日志失败,以便它们可以被另一个进程重新提交:无法想出一个很好的方法来一般地存储失败的提交。还需要确保重新提交不会覆盖较新的数据。

4

1 回答 1

0

@ThinkJet。该相关链接是一个有趣的观点。在我的情况下,一个小的失败,就像描述的那样,不会是什么大不了的。我们目前有其他东西试图让所有这些系统保持同步(并不总是成功)。如果一个或两个事务确实失败了,它应该被这些进程拾取。

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

于 2013-10-07T14:48:31.097 回答