检测实体框架EntityObject上更改的属性

Dre*_*kes 4 .net entity-framework entity-framework-4

我想阅读一篇EntityObject内容中的变化,以便将其纳入报告中.

例如:

名称: 之前之后

地点: 之前之后

有没有通用的方法来做到这一点?我正在使用EF4和默认实体类生成(不是POCO).

这些实体将被附加,因此应该跟踪它们的变化.我无法通过IEntityWithChangeTracker界面看到这样做的方法.

遍历导航属性会很好,但仅仅报告更改的原始属性就足够了.

Lad*_*nka 8

你可以检索ObjectStateEntry你的实体和检查的内容CurrentValuesOriginalValues.试试这个(未经测试):

ObjectStateEntry entry = objectContext.ObjectStateManager.GetObjectStateEntry(entity);
foreach (string property in entry.GetModifiedProperties()) {
    object oldValue = entry.OriginalValues[property];
    object newValue = entry.CurrentValues[property];
}
Run Code Online (Sandbox Code Playgroud)

这不会处理导航属性,我不确定它如何适用于复杂类型.