按我的理解流程如下
- context.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.TrackAll;
- 开启跟踪(默认就是开启的)
- context.Configuration.AutoDetectChangesEnabled = false/true;
- 开启是否自动计算修改
- 如果true每次Add,Update,Remove等都会进行一次DetectChanges,所以可以如下提高性能:
- context.Configuration.AutoDetectChangesEnabled = false
- DetectChanges()
- Add/Update/Remove等等操作
- DetectChanges
- 进行实体状态和跟踪的快照进行对比更新
- SaveChanges
- 把对比有修改的实体更新到数据库
- AcceptAllChanges,在SaveChanges(bool):bool可控制是否要AcceptAllChanges
- 重新刷新快照实体的状态