我正在使用Entity Frameworks Code First。我有一个实体需要保留更改历史记录。该实体具有双重属性,当它发生变化时,我需要记录金额变化金额和发生的日期。这意味着我需要旧值,新值减去并发布值变化或者dbContect.SaveChanges()
调用时。
这个项目非常简单,我想保持这种方式,所以我不想添加服务层。我只是在MVC控制器中创建存储库请求。 (我知道这不是纯粹的,但它非常敏捷)
如何拦截对此实体的更改,以便我可以写入更改日志?
答案 0 :(得分:3)
您可以侦听ObjectContext.SavingChanges事件,然后使用ObjectContext.ObjectStateManager属性查找您感兴趣的实体类型的ObjectStateEntry。
ObjectStateEntry
具有使用CurrentValues
方法访问OriginalValues
和GetUpdatableOriginalValues
的属性,或仅访问可更新属性的原始值。
注意:我没有对此进行测试,但希望它能为您效劳。