【问题标题】:TransactionScope, Transaction Escalation for the same connection stringTransactionScope,相同连接字符串的事务升级
【发布时间】:2013-09-14 13:57:10
【问题描述】:

在 TransactionScope 实例化之后,我创建了 EF 上下文并保存了一些数据,然后我创建了另一个 EF 上下文并再次保存了数据。在第二个 EF 中,我收到错误“[SERVER] 上的 MSDTC 不可用”。

通过对事务中的所有内容使用一个 EF 上下文来解决问题。我以为如果我使用相同的连接字符串,就不需要事务升级。

有人对此有解释,你有什么疑问?

【问题讨论】:

    标签: .net sql-server-2008 entity-framework transactionscope


    【解决方案1】:

    为了防止事务升级,不仅仅是使用相同的连接字符串,还必须使用相同的sql连接

    根据MSDN,导致System.Transactions 基础架构将事务所有权转移给MSDTC 的升级发生在以下情况:

    事务中至少有两个支持单阶段通知的持久资源。例如,加入单个连接不会导致事务被提升。但是,每当您打开与数据库的第二个连接导致数据库登记时,System.Transactions 基础结构会检测到它是事务中的第二个持久资源,并将其升级为 MSDTC 事务。

    这很可能是您的情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-03
      • 1970-01-01
      • 1970-01-01
      • 2011-08-28
      • 1970-01-01
      相关资源
      最近更新 更多