Entity framework EF5 DbContext.SaveChanges是否处理事务提交和回滚?

Entity framework EF5 DbContext.SaveChanges是否处理事务提交和回滚?,entity-framework,entity-framework-5,dbcontext,transactionscope,Entity Framework,Entity Framework 5,Dbcontext,Transactionscope,我不清楚是否需要使用TransactionScope或DbContext。SaveChanges()足以提交包含多个CRUD操作的事务。我正在后端使用SQL Server。如果您多次调用SaveChanges(),并希望回滚所有这些更改,则您需要使用TransactionScope。如果在上下文中调用一次SaveChanges(),所有更改都会在后台事务中一次推送到数据库。相关:以下场景只需确认:如果我为多个CRUD操作调用一次SaveChanges(),我必须处理DbContext对象才能回滚

我不清楚是否需要使用TransactionScope或DbContext。SaveChanges()足以提交包含多个CRUD操作的事务。我正在后端使用SQL Server。

如果您多次调用
SaveChanges()
,并希望回滚所有这些更改,则您需要使用
TransactionScope
。如果在上下文中调用一次
SaveChanges()
,所有更改都会在后台事务中一次推送到数据库。

相关:以下场景只需确认:如果我为多个CRUD操作调用一次SaveChanges(),我必须处理DbContext对象才能回滚事务。我认为处理
DbContext
不会回滚事务。如果是这种情况,您可能希望查看
SaveChanges()
的重载选项,您可以禁用事务的自动提交,并负责调用
AcceptAllChanges()
。但是您提供的msdn链接表明ObjectContext.SaveChanges()api现在已经过时。此外,如果SQL Server引发异常,ObjectContext.SaveChanges()将回滚整个事务。另外,是否有任何更简单的方法可以使用DbContext回滚CRUD操作?在这一点上,可以使用新的重载,但这似乎不适合您试图用最少的代码完成的操作。在这种情况下,滚动您自己的
TransactionScope
可能是最简单的事情。由于在不调用TransactionScope.Complete()的情况下处理TransactionScope对象会回滚事务,因此它对DbContext的工作方式是否应该不一样,我的意思是,在不调用其SaveChanges()的情况下处理DbContext对象方法应该理想地回滚事务。我不确定这一点,但需要更多的信息,了解为什么它与TransactionScope回滚不同。