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

   默认情况下,ef6能够在调用以下方法时自动判别实体是否变更:

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

   当上下文追踪很多实体,并且你在一个循环中调用很多次这些方法的时候,你可以在循环之前先关闭自动识别功能,可以极大提升效率。例如:

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; 
    } 
}
注意不要忘记循环结束后重新开启这个功能。

 

posted @ 2018-02-18 12:35  急速的86  阅读(107)  评论(0)    收藏  举报