EntityFramework6中关闭自动识别变动功能提高效率的一点小技巧

   默认状况下,ef6可以在调用如下方法时自动判别实体是否变动:oop

  • DbSet.Find
  • DbSet.Local
  • DbSet.Remove
  • DbSet.Add
  • DbSet.Attach
  • DbContext.SaveChanges
  • DbContext.GetValidationErrors
  • DbContext.Entry
  • DbChangeTracker.Entries

   当上下文追踪不少实体,而且你在一个循环中调用不少次这些方法的时候,你能够在循环以前先关闭自动识别功能,能够极大提高效率。例如:blog

using (var context = new BloggingContext()) 
{ 
    try 
    { 
        context.Configuration.AutoDetectChangesEnabled = false; 
 
        // Make many calls in a loop 
        foreach (var blog in aLotOfBlogs) 
        { 
            context.Blogs.Add(blog); 
        } 
    } 
    finally 
    { 
        context.Configuration.AutoDetectChangesEnabled = true; 
    } 
}注意不要忘记循环结束后从新开启这个功能。
相关文章
相关标签/搜索