DbContext is very slow when adding and deleting

前端 未结 2 1920
伪装坚强ぢ
伪装坚强ぢ 2020-12-07 22:38

When using DbContext in a database-first scenario I found out that adding and deleting entities is very slow compared to ObjectContext. If adding 2000 entities and saving th

相关标签:
2条回答
  • 2020-12-07 23:31

    In EF6 you can now use AddRange and RemoveRange on DbSet.

    From to the documentation on the links:

    Note that if AutoDetectChangesEnabled is set to true (which is the default), then DetectChanges will be called once before {adding,deleting} any entities and will not be called again. This means that in some situations {Add,Remove}Range may perform significantly better than calling {Add,Remove} multiple times would do.

    0 讨论(0)
  • 2020-12-07 23:41

    Try to add this to your DbContext tests:

    dbContext.Configuration.AutoDetectChangesEnabled = false;
    
    // Now do all your changes
    
    dbContext.ChangeTracker.DetectChanges();
    dbContext.SaveChanges();
    

    and try to run your tests again.

    There was some architectural change in DbContext API which checks changes in entities every time you Add, Attach or Delete anything from the context. In ObjectContext API this detection run only when you triggered SaveChanges. It is better solution for most common scenarios but it requires special handling for mass data processing.

    0 讨论(0)
提交回复
热议问题