大家好,我是一个相对新手的Entity Framework使用者,想请教一下当尝试从上下文中删除数据时,哪种方式更好?
是通过传递集合使用.RemoveRange方法呢?还是自己编写循环并调用.Remove方法?
也许它们最终做的事情都一样,但我很想知道哪种更受欢迎?
大家好,我是一个相对新手的Entity Framework使用者,想请教一下当尝试从上下文中删除数据时,哪种方式更好?
是通过传递集合使用.RemoveRange方法呢?还是自己编写循环并调用.Remove方法?
也许它们最终做的事情都一样,但我很想知道哪种更受欢迎?
RemoveRange的添加主要是为了方便,但使用它可能会带来性能上的好处。以下内容来自CodePlex源代码:
请注意,如果DbContextConfiguration.AutoDetectChangesEnabled设置为true(默认情况下),则在删除任何实体之前将调用DetectChanges一次,并且不会再次调用。这意味着在某些情况下,RemoveRange可能比多次调用Remove更快。
如果您的上下文中跟踪了许多实体,则DetectChanges可能会导致性能问题。在循环中执行这么多次可能会影响性能。