Entity framework 实体框架移除vs移除

Entity framework 实体框架移除vs移除,entity-framework,Entity Framework,您好,我对实体框架相当陌生,我想知道在尝试从上下文中删除时什么更好 使用.RemoveRange传递集合还是自己循环并调用.Remove方法更好 也许他们最终还是做了同样的事情,但我有兴趣知道哪一个更可取?添加Removatange主要是为了方便,但使用它会带来性能上的好处。这来自CodePlex上的源代码: 请注意,如果将DbContextConfiguration.AutoDetectChangesEnabled设置为true(这是默认值),则在删除任何实体之前将调用一次DetectChan

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

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


也许他们最终还是做了同样的事情,但我有兴趣知道哪一个更可取?

添加Removatange主要是为了方便,但使用它会带来性能上的好处。这来自CodePlex上的源代码:

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


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

谢谢@Dismissile我认为单次调用似乎更容易,但我不知道为什么。所以你是说每次调用Remove都会执行DetectChanges?是的,我直接从源代码中复制了那个文档。每次在DbSet上调用Remove时都会调用DetectChanges,以便它可以更新图的其余部分。