Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 实体框架6上的回滚_Entity Framework_Entity Framework 6_Rollback - Fatal编程技术网

Entity framework 实体框架6上的回滚

Entity framework 实体框架6上的回滚,entity-framework,entity-framework-6,rollback,Entity Framework,Entity Framework 6,Rollback,我在一个项目上使用EntityFramework6在SQLServer2012上访问数据库 我们团队中有一个关于回滚后db上下文状态的未决讨论。很明显,执行回滚后,数据库不受事务更改的影响。但是上下文呢 我所在的团队相信数据库上下文会回滚,数据库也会更改。换句话说,我认为继续在上下文中工作是安全的,不会冒回滚事务的某些更改仍然潜伏在上下文中的某个地方的风险 谁能杀了这只鸭子,我们就可以结束讨论了。我到处寻找一个明确的答案,却没有找到 如果我的假设是错误的,我会非常失望,因为上下文会回滚,数据库也

我在一个项目上使用EntityFramework6在SQLServer2012上访问数据库

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

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

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


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

上下文不会发生任何变化。

即使在回滚之后,您也可以使用它。只有数据库更改才会回滚,
DbContextTransaction
在提交或回滚后将被释放

您可以使用EF6最新的事务API,如下所示

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

                        context.SaveChanges(); 

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

您可以在此处阅读更多信息:

我仍然不确定这项服务的用途。回滚后,上下文与数据库不同步。下次在此上下文上执行SaveChanges和Commit时会发生什么?现在将回滚的记录提交到数据库。换句话说,,回滚后使用上下文是否不安全?您可以在回滚后使用
上下文
。换句话说
上下文
可以安全地用于任何其他目的,因此回滚不会对
上下文
做任何事。它只会影响
dbContextTransaction
,当然也会影响数据库记录。是否对此有何反馈?如果这对你没有帮助,请告诉我。然后我可以删除这篇文章。谢谢你,这是一个很大的帮助。这澄清了在EFL上使用事务的问题。欢迎:)希望您可以通过
向上投票
接受此解决方案。请查看如何做到这一点: