【问题标题】:how to share a transaction in two dbContext with EF6?如何与 EF6 共享两个 dbContext 中的事务?
【发布时间】:2013-12-04 17:35:13
【问题描述】:

我正在使用 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 的类型不正确。

我想知道如何在两个 dbContext 之间共享同一个事务。

谢谢。

【问题讨论】:

    标签: entity-framework transactions


    【解决方案1】:

    需要先将miDbContext的连接传递给miDbContext2。

    试试下面的代码。它应该可以工作。

    Entities miDbContext2 = new Entities(miDbContext.Database.Connection, false);
    miDbContext2.DataBase.UseTransaction(miTransaccion.UnderlyingTransaction);
    

    【讨论】:

      【解决方案2】:

      用更好的语法添加到 SajidQ 的答案中

        miDbContext2.Database.UseTransaction(dbContextTransaction.UnderlyingTransaction);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-08
        • 1970-01-01
        • 2014-01-24
        • 1970-01-01
        • 2014-01-05
        • 2019-04-02
        相关资源
        最近更新 更多