Using Transactions or SaveChanges(false) and AcceptAllChanges()?

后端 未结 3 1459
[愿得一人]
[愿得一人] 2020-11-22 06:15

I have been investigating transactions and it appears that they take care of themselves in EF as long as I pass false to SaveChanges() and then cal

3条回答
  •  感情败类
    2020-11-22 06:49

    Because some database can throw an exception at dbContextTransaction.Commit() so better this:

    using (var context = new BloggingContext()) 
    { 
      using (var dbContextTransaction = context.Database.BeginTransaction()) 
      { 
        try 
        { 
          context.Database.ExecuteSqlCommand( 
              @"UPDATE Blogs SET Rating = 5" + 
                  " WHERE Name LIKE '%Entity Framework%'" 
              ); 
    
          var query = context.Posts.Where(p => p.Blog.Rating >= 5); 
          foreach (var post in query) 
          { 
              post.Title += "[Cool Blog]"; 
          } 
    
          context.SaveChanges(false); 
    
          dbContextTransaction.Commit(); 
    
          context.AcceptAllChanges();
        } 
        catch (Exception) 
        { 
          dbContextTransaction.Rollback(); 
        } 
      } 
    } 
    

提交回复
热议问题