问题涉及交易范围和context.SaveChanges()
。如果我正在使用foreach
处理一百万条记录,并且我在每次记录之后保存,通过在事务范围内调用context.SaveChanges()
来保存1000条记录,并且在处理了10000个并且{{ 1}}调用,已经保存的数据会被回滚吗?
例如:
SaveChanges()
答案 0 :(得分:3)
只要DbContext
在其中注册,事务范围就会优先,默认情况下是这样。
因此,如果您不打电话给TransactionScope.Complete
(例如因为DbContext
相关的异常会将您抛出using
区域之外),所有内容将按预期回滚。我鼓励你简单地尝试一下(最好用旁边的探查器来监控正在发生的事情)。
简而言之,每个SaveChanges
都会访问数据库,但不会提交。