当涉及到使用EF代码第一次有两个选项更改跟踪:更改跟踪差异用的DbContext和EF代码第一次
基于更改跟踪- 快照
- 通知基于更改跟踪与代理
使用每种更改跟踪方法运行时请考虑以下代码。假设一个带有默认配置选项的DbContext实例。
var o = context.MySet.First();
o.MyProperty = 42;
context.SaveChanges();
如果在第一行的上下文加载和跟踪的实体实例已经为“myProperty的”一个的42值,则其在变更跟踪器状态是在第三调用“的SaveChanges”期间的不同线。
- 基于快照的更改跟踪 - 其状态为“未更改”。
- 基于通知的变更跟踪与代理 - 其状态是“修改”。
鉴于在基于通知的变更跟踪下,在调用“SaveChanges”期间不必要的更新语句将被发送到数据库我认为大多数开发人员更喜欢基于快照的变更跟踪行为。
这是行为故意的差异吗?
当通过代理使用基于通知的更改跟踪时,是否有办法实现与基于快照的更改跟踪相同的行为?
注意,我相信这是与此相关的功能建议 - http://data.uservoice.com/forums/72025-entity-framework-feature-suggestions/suggestions/1015363-better-change-tracking-for-poco-proxies