有没有办法在不重复使用DTC的情况下在不同连接之间重用事务? 我无法弄清楚如何做到这一点。
using (TransactionScope ...
{
using (var db1 = new modelXEntities())
{
db1.Database.Connection.EnlistTransaction(Transaction.Current); ???
db1.SaveChanges(); ==>error
using (var db2 = new modelYEntities())
{
db2.Database.Connection.EnlistTransaction(Transaction.Current); ???
db2.SaveChanges(); ==>error
错误:基础提供程序在打开时失败...
感谢。
答案 0 :(得分:1)
如果要为多个连接设置单个事务,则必须使用distributed transaction = MSDTC。原因是协调多个事务资源之间的事务需要特殊处理(两阶段提交)。所有事务资源必须与协调事务的单独进程通信。这就是MSDTC(MS分布式事务协调器)提供的功能。