EntityFramework6中關閉自動識別變更功能提升效率的一點小技巧
阿新 • • 發佈:2018-02-18
很多 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中關閉自動識別變更功能提升效率的一點小技巧