将Transactions和TransactionScope与Entity Framework Core 2.1和dbcontext一起使用

时间:2018-05-29 13:26:27

标签: c# asp.net-core entity-framework-core transactionscope

我正在尝试在Entity Framework Core中创建依赖事务(v.2.1)。

这个想法是在“父亲”交易中创建“子”交易。
如果其中一个孩子失败了,父亲也会失败。

我尝试使用TransactionScope,但我遇到了以下错误。

  

警告作为警告的错误异常   'Microsoft.EntityFrameworkCore.Database.Transaction.AmbientTransactionWarning':   已检测到环境事务。实体框架核心确实如此   不支持环境事务。看到   http://go.microsoft.com/fwlink/?LinkId=800142要压制这一点   异常使用DbContextOptionsBuilder.ConfigureWarnings API。   重写时可以使用ConfigureWarnings   DbContext.OnConfiguring方法或使用AddDbContext   应用服务提供商。

以下是控制器的方法,dbcontext是在控制器的构造函数中创建和初始化的

这是我的代码:

public bool father()
    {
        using (var transaction = new TransactionScope(TransactionScopeOption.Required))
        {
            try
            {
                //Do Stuff with the dbcontext 
                //(read, as "var x1 = _dbcontext.Database.Table1; etc...")...
                child();
                transaction.Complete();
                //Do Stuff...
            }
            catch
            {
                //Do Stuff...
                transaction.Dispose();
                //Do Stuff...
            }
        }
    }
}
public bool child()
    {
        using (var transaction2 = new TransactionScope(TransactionScopeOption.Required))
        {
            try
            {
                //Do other stuff with the dbcontext
                //(read, as "var x2 = _dbcontext.Database.Table2; etc...")...
                transaction2.Complete();
                //Do Stuff...
            }
            catch
            {
                //Do Stuff...
                transaction2.Dispose();
                //Do Stuff...
            }
        }
    }
}

我怎样才能让它发挥作用?

0 个答案:

没有答案