Entity framework 实体框架6上的回滚
我在一个项目上使用EntityFramework6在SQLServer2012上访问数据库 我们团队中有一个关于回滚后db上下文状态的未决讨论。很明显,执行回滚后,数据库不受事务更改的影响。但是上下文呢 我所在的团队相信数据库上下文会回滚,数据库也会更改。换句话说,我认为继续在上下文中工作是安全的,不会冒回滚事务的某些更改仍然潜伏在上下文中的某个地方的风险 谁能杀了这只鸭子,我们就可以结束讨论了。我到处寻找一个明确的答案,却没有找到Entity framework 实体框架6上的回滚,entity-framework,entity-framework-6,rollback,Entity Framework,Entity Framework 6,Rollback,我在一个项目上使用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上使用事务的问题。欢迎:)希望您可以通过向上投票
接受此解决方案。请查看如何做到这一点: