为了账号安全,请及时绑定邮箱和手机立即绑定

使用事务还是SaveChanges(False)和AcceptAllChanges()?

使用事务还是SaveChanges(False)和AcceptAllChanges()?

C#
倚天杖 2019-06-26 15:05:41
使用事务还是SaveChanges(False)和AcceptAllChanges()?我一直在调查交易,看来只要我通过,他们就会在EF中照顾自己。false到SaveChanges()然后打电话AcceptAllChanges()如果没有错误:SaveChanges(false);// ...AcceptAllChanges();万一出了什么事怎么办?我不需要回滚吗?或者,一旦我的方法超出范围,事务就结束了吗?在事务进行一半的过程中分配的任何indentiy列会发生什么情况?我想,如果有人在我的唱片坏掉之前在我的唱片之后加了一张唱片,那就意味着会有一个丢失的身份值。有什么理由使用这个标准吗?TransactionScope在我的代码中?
查看完整描述

3 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

因为某些数据库可以在dbContextTransaction.Commit()中抛出异常,所以更好的情况是:

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(); 
    } 
  } }


查看完整回答
反对 回复 2019-06-26
  • 3 回答
  • 0 关注
  • 1517 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信