回滚 Entity Framework 6

Rollback on Entity Framework 6

我在一个项目中使用 Entity Framework 6 在 SQL Server 2012 上访问数据库。

我们的团队有一个关于回滚后数据库上下文状态的未决讨论。很明显,执行回滚后,数据库不受事务更改的影响。但是上下文呢?

我所在的团队相信数据库上下文会随着数据库的更改而回滚。换句话说,我认为继续在上下文中工作是安全的,而不是冒回滚事务的某些更改仍然潜伏在上下文中的某个地方的风险。

谁能杀了这只鸭子,这样我们就可以结束讨论了。我到处寻找明确的答案都没有找到。

如果我的假设是错误的,我会感到非常失望,上下文回滚以及数据库更改。这意味着我们应该通过一组复杂的更新停止迭代,丢弃上下文并重新开始,以防其中一个更新回滚。

context 不会发生任何事情。即使在回滚后也可以使用它 back.Only 数据库更改将被回滚并且 DbContextTransaction 意味着一旦它被处理已提交或回滚。

您可以使用 EF 6 的最新交易 API 如下所示。

using (var context = new YourContext()) 
            { 
                using (var dbContextTransaction = context.Database.BeginTransaction()) 
                { 
                    try 
                    { 
                        //your db operations

                        context.SaveChanges(); 

                        dbContextTransaction.Commit(); 
                    } 
                    catch (Exception) 
                    { 
                        dbContextTransaction.Rollback(); 
                    } 
                } 
            } 

您可以在此处阅读更多相关信息:Entity Framework Working with Transactions