如何在调用Entity Frameworks SaveChanges()时写入更改日志?

时间:2010-11-24 14:50:10

标签: entity-framework

我正在使用Entity Frameworks Code First。我有一个实体需要保留更改历史记录。该实体具有双重属性,当它发生变化时,我需要记录金额变化金额和发生的日期。这意味着我需要旧值,新值减去并发布值变化或者dbContect.SaveChanges()调用时。

这个项目非常简单,我想保持这种方式,所以我不想添加服务层。我只是在MVC控制器中创建存储库请求。 (我知道这不是纯粹的,但它非常敏捷)

如何拦截对此实体的更改,以便我可以写入更改日志?

1 个答案:

答案 0 :(得分:3)

您可以侦听ObjectContext.SavingChanges事件,然后使用ObjectContext.ObjectStateManager属性查找您感兴趣的实体类型的ObjectStateEntry

ObjectStateEntry具有使用CurrentValues方法访问OriginalValuesGetUpdatableOriginalValues的属性,或仅访问可更新属性的原始值。

注意:我没有对此进行测试,但希望它能为您效劳。