【发布时间】:2013-10-04 18:44:22
【问题描述】:
我正在开发一个将更新多个数据库(SQL Server 2008 和 Oracle 11g)的应用程序。 TransactionScope 似乎是确保更新始终正确提交的合乎逻辑的方式,但安装 MSDTC 似乎不是一种选择。将来,此应用程序还可能使用不支持分布式事务的数据源。
我花了很多时间试图提出另一种解决方案,但似乎没有任何效果。所有搜索都指向 TransactionScope 和分布式事务。
应用程序是使用实体框架用 C# 编写的。任何人有任何建议,不需要升级到分布式事务?以下是我的想法清单,但都无处可去。
+TransactionScope:无法使用 MSDTC。未来的数据源可能不支持分布式事务。
+手动跟踪和回滚事务:我还没有找到在实体框架中执行此操作的好方法。
+队列/日志失败,因此它们可以被另一个进程重新提交:无法想出一个好的方法来一般地存储失败的提交。还需要确保重新提交不会覆盖较新的数据。
【问题讨论】:
-
抱歉,哪一个不支持分布式事务?
-
目前所有来源都支持它们(尽管我们无法打开 MSTDC)。我在公立学区工作。我们有多种不同的系统来处理不同的事情(入学、成绩、出勤等)。我正在尝试编写一个类库,我们可以使用它来一次更新所有系统(如果一个孩子更改了他的名字,我们可以使用该库一次更新所有应用程序中的名称)。可以随时引入以 XXXXX 为数据存储的新系统。
-
我认为所有应用程序都必须使用相同的共享数据。
-
在理想世界中,是的。然而,这些都是我们并不总是(大部分时间)有太多控制权的第 3 方应用程序。
标签: c# .net oracle entity-framework transactions