实体框架7回滚方法

3 c# entity-framework-core asp.net-core

如何在Entity Framework 7中回滚事务?

在旧版本中,我们有

            try
            {
                dataContext.ChangeTracker.DetectChanges();
                dataContext.SaveChanges();
            }
            catch (Exception e)
            {
                dataContext.Database.CurrentTransaction.Rollback();
                Debug.WriteLine(e.Message);
            }
Run Code Online (Sandbox Code Playgroud)

现在我用

“ EntityFramework.Commands”:“ 7.0.0-rc1-final”

它没有方法。

Ily*_*kov 5

中的推荐交易模式7.0.0-rc1-final与EF6中的相同:

using (var transaction = context.Database.BeginTransaction())
{
    try
    {
        /*do something*/
        context.SaveChanges();

        transaction.Commit();
    }
    catch (Exception ex)
    {
        transaction.Rollback();
    }
}
Run Code Online (Sandbox Code Playgroud)

EF7还提供了异步API(不是EF6):

using (var transaction = await context.Database.BeginTransactionAsync())
Run Code Online (Sandbox Code Playgroud)

  • 目前[文档](https://learn.microsoft.com/en-us/ef/core/ saving/transactions)表示“如果任一命令失败,事务将在处理时自动回滚” (3认同)