我不确定是否需要使用TransactionScope还是DbContext.SaveChanges()已足够提交包含多个CRUD操作的事务。我在后台使用SQL Server。
我不确定是否需要使用TransactionScope还是DbContext.SaveChanges()已足够提交包含多个CRUD操作的事务。我在后台使用SQL Server。
SaveChanges()
,并希望回滚所有更改,则需要使用TransactionScope
。如果您在上下文中仅调用一次SaveChanges()
,则所有更改都会在幕后以事务的形式一次性推送到数据库中。DbContext
不会回滚事务。如果是这种情况,您可能需要查看 SaveChanges()
的重载选项,其中您可以禁用事务的自动提交,并且您将负责调用 AcceptAllChanges()
。http://msdn.microsoft.com/en-us/library/bb739065.aspx - Steven VSaveChanges(SaveOptions options)
,但这似乎不符合您尝试以最少的代码实现的目标。在这种情况下,编写自己的TransactionScope
可能是最简单的方法。 - Steven VDbContext
而没有调用SaveChanges
,则对数据库/事务没有任何影响。您只是在C#中向实体添加了对象。当您启动事务范围时,它会在SQL中转换为BEGIN TRANSACTION
。当您处置TransactionScope
时,它会在SQL中运行ROLLBACK TRANSACTION
。如果您使用TransactionScope.Complete()
,它将运行COMMIT TRANSACTION
。 - Steven V