实体框架Remove vs RemoveRange

时间:2014-05-21 15:34:48

标签: entity-framework

您好我对实体框架相当新,并且想知道在尝试从上下文中删除时哪个更好。

最好使用.RemoveRange传递集合还是自己循环并调用.Remove方法?

他们最终可能会做同样的事情,但我有兴趣知道哪个更受欢迎?

1 个答案:

答案 0 :(得分:3)

为方便起见,添加了RemoveRange,但使用它可以带来性能优势。这来自CodePlex上的源代码:

  

请注意,如果将DbContextConfiguration.AutoDetectChangesEnabled设置为true(默认值),则在删除任何实体之前将调用一次DetectChanges,并且不会再次调用。这意味着在某些情况下,RemoveRange可能会比多次调用Remove更好地执行。

如果您在上下文中跟踪了大量实体,则DetectChanges可能会遇到相当大的性能问题。在循环中多次执行此操作可能会对性能造成不利影响。