实体框架6,事务范围,上下文和SaveChanges

时间:2015-08-16 15:01:06

标签: entity-framework entity-framework-6 transactionscope savechanges

问题涉及交易范围和context.SaveChanges()。如果我正在使用foreach处理一百万条记录,并且我在每次记录之后保存,通过在事务范围内调用context.SaveChanges()来保存1000条记录,并且在处理了10000个并且{{ 1}}调用,已经保存的数据会被回滚吗? 例如:

SaveChanges()

1 个答案:

答案 0 :(得分:3)

只要DbContext在其中注册,事务范围就会优先,默认情况下是这样。

因此,如果您不打电话给TransactionScope.Complete(例如因为DbContext相关的异常会将您抛出using区域之外),所有内容将按预期回滚。我鼓励你简单地尝试一下(最好用旁边的探查器来监控正在发生的事情)。

简而言之,每个SaveChanges都会访问数据库,但不会提交。