![](/img/trans.png)
[英]Best way to implement Transaction Logic single Database with Multiple DB Context Class in Entity Framework 6.0
[英]How to implement single transaction in Entity Framework 5 with both context SQL DB and DB2
我试图在单个事务中实现两个DbContext
( SQLDBContext
和DB2Context
),但是每次都遇到与DB2相关的问题。
它可以很好地与SQL配合使用,但是在尝试访问DB2时会引发错误。
例外是:
DB2Entities getter中的错误。与基础事务管理器的通信失败。
由于通信问题,MSDTC事务管理器无法从源事务管理器中提取事务。 可能的原因是:存在防火墙,并且MSDTC进程没有例外;两台计算机无法通过其NetBIOS名称相互找到对方;或者未为两个事务管理器之一启用对网络事务的支持。 (来自HRESULT的异常:0x8004D02B)
请帮助我在单个“事务”下实现两个数据库事务,或者如果其中一个失败,则两个事务都应回滚。
代码就像:
var option = new TransactionOptions
{
IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted,
Timeout = TimeSpan.FromSeconds(60)
};
using (var scopeOuter = new TransactionScope(TransactionScopeOption.Required, option))
{
SQLDBContext.Table.AddSomething();
SQLDBContext.SaveChanges();
using (var scopeInner = new TransactionScope(TransactionScopeOption.Required, option))
{
DB2Context.Table.AddSomething();
DB2Context.SaveChanges();
scopeInner.Complete();
}
scopeOuter.Complete();
}
谢谢!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.