按我的理解流程如下
- 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
- 重新刷新快照实体的状态


博客介绍了数据库操作中实体状态跟踪与更新的流程。开启跟踪后,可设置是否自动计算修改,通过关闭自动计算并手动调用DetectChanges能提高性能。进行Add、Update等操作后,对比实体状态和快照更新,最后将修改更新到数据库,还可控制是否刷新快照实体状态。
102

被折叠的 条评论
为什么被折叠?



