猿问

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

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

我一直在调查交易,看来只要我通过,他们就会在EF中照顾自己。falseSaveChanges()然后打电话AcceptAllChanges()如果没有错误:

SaveChanges(false);// ...AcceptAllChanges();

万一出了什么事怎么办?我不需要回滚吗?或者,一旦我的方法超出范围,事务就结束了吗?

在事务进行一半的过程中分配的任何indentiy列会发生什么情况?我想,如果有人在我的唱片坏掉之前在我的唱片之后加了一张唱片,那就意味着会有一个丢失的身份值。

有什么理由使用这个标准吗?TransactionScope在我的代码中?


倚天杖
浏览 1518回答 3
3回答

Qyouu

因为某些数据库可以在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();      }    } }
随时随地看视频慕课网APP
我要回答