我的机器上禁用了 DTC。据我了解,这段代码应该失败,因为它在同一事务中使用两个数据上下文。那么,它为什么有效呢? (注意:我使用 .NET 3.5 和 .NET 4.0 尝试过此操作。)
using (TransactionScope transactionScope = new TransactionScope())
{
UpdateEta();
UpdateBin();
transactionScope.Complete();
}
以下是被调用的 DAL 方法:
public static void UpdateBin(Bin updatedBin)
{
using (DevProdDataDataContext dataContext = new DevProdDataDataContext(ConnectionString))
{
BinRecord binRecord = (from bin in dataContext.BinRecords
where bin.BinID == updatedBin.BinId
select bin).FirstOrDefault();
binRecord.BinID = updatedBin.BinId;
binRecord.BinName = updatedBin.BinName;
dataContext.SubmitChanges();
}
}
public static void UpdateEta(Eta updatedEta)
{
using (DevProdDataDataContext dataContext = new DevProdDataDataContext(ConnectionString))
{
EtaRecord etaRecord = (from eta in dataContext.EtaRecords
where eta.ID == updatedEta.ID
select eta).FirstOrDefault();
etaRecord.ID = updatedEta.ID;
etaRecord.Title = updatedEta.Title;
dataContext.SubmitChanges();
}
}
两者之间的连接字符串是否不同?如果不是,可能是它们都重用了同一个底层连接池中的同一个连接,从而无需升级到 DTC?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)