我想阅读EntityObject
中的更改以包含在报告中。
例如:
名称:
之前之后位置:
之前之后
有没有通用的方法来做到这一点?我正在使用EF4和默认实体类生成(不是POCO)。
这些实体将被附加,因此应该跟踪它们的变化。我无法通过IEntityWithChangeTracker
界面看到这样做的方法。
遍历导航属性会很不错,但仅仅报告更改的原始属性就足够了。
答案 0 :(得分:8)
您可以检索实体的ObjectStateEntry
并检查CurrentValues
和OriginalValues
的内容。试试这个(未经测试):
ObjectStateEntry entry = objectContext.ObjectStateManager.GetObjectStateEntry(entity);
foreach (string property in entry.GetModifiedProperties()) {
object oldValue = entry.OriginalValues[property];
object newValue = entry.CurrentValues[property];
}
这不会处理导航属性,我不确定它如何与复杂类型一起使用。
答案 1 :(得分:1)
除了Ladislav Mrnka的建议:不是非常通用,但至少是可能的解决方案:Code Generation and T4 Text Templates。这允许您在生成模型时向每个实体添加自己的自定义逻辑。
在您的情况下,您可以实现所需的遍历功能来检查导航属性。