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

Posted nick-xlj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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; 
    } 
}
注意不要忘记循环结束后重新开启这个功能。

 


以上是关于EntityFramework6中关闭自动识别变更功能提升效率的一点小技巧的主要内容,如果未能解决你的问题,请参考以下文章

如何在 mariadb 中关闭自动提交?

如何在 Visual Studio 中关闭 App.config 文件自动排列格式

如何使用 kubectl 命令在 Kubernetes 中关闭自动缩放?

如何配置在 Spring + JDBC 中关闭自动提交?

如何在我的网站中关闭自动睡眠 ios

自动加密/解密:检测文件在 Mate/Gnome 应用程序中关闭