实体框架Remove与RemoveRange

NAJ*_*NAJ 5 entity-framework

您好,我对实体框架相当陌生,想知道尝试从上下文中删除时什么更好。

是使用 .RemoveRange 传递集合更好,还是做我自己的循环并调用 .Remove 方法?

无论如何,他们最终可能会做同样的事情,但我有兴趣知道哪个是首选?

Dis*_*ile 6

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

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

如果您在上下文中跟踪了很多实体,则 DetectChanges 可能会出现相当大的性能问题。在循环中多次执行此操作可能会降低性能。