我正在使用EF6,我知道有两种方法可以使用事务,BeginTransaction和UseTransaction。
我只使用一个dbContext,但在我的情况下,我需要使用辅助dbContext,我需要第二个dbContext使用与主要相同的事务。我尝试使用这段代码:
using(Entities miDbContext = new Entities())
{
using (DbContextTransaction miTransaccion = miDbContext.Database.BeginTransaction())
{
Entities miDbContext2 = new Entities();
miDbContext2.DataBase.UseTransaction(miTransaccion);
}
}
但是我在UseTransaction中收到错误,因为miTrasaccion的类型不正确。
我想知道如何在两个dbContexts之间共享相同的事务。
感谢。
答案 0 :(得分:5)
您需要首先将miDbContext的连接传递给miDbContext2。
尝试以下代码。它应该工作。
Entities miDbContext2 = new Entities(miDbContext.Database.Connection, false);
miDbContext2.DataBase.UseTransaction(miTransaccion);
答案 1 :(得分:1)
使用更好的语法
添加SajidQ的答案 miDbContext2.Database.UseTransaction(dbContextTransaction.UnderlyingTransaction);