1. 程式人生 > >EntityFramework6中關閉自動識別變更功能提升效率的一點小技巧

EntityFramework6中關閉自動識別變更功能提升效率的一點小技巧

很多 nal trac 功能 關閉 work call led errors

默認情況下,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中關閉自動識別變更功能提升效率的一點小技巧