TransactionScope,相同连接字符串的事务升级

时间:2013-09-14 13:57:11

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

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

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

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

1 个答案:

答案 0 :(得分:2)

为了防止交易升级,不仅仅使用相同的连接字符串,您必须使用相同的 sql connetcion

根据MSDN,导致 System.Transactions 基础设施将交易所有权转移到MSDTC的升级发生在以下情况:

  

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

这很可能是你的情况。