我想阅读其中的更改EntityObject
以包含在报告中。
例如:
名称:
之前之后地点:
之前之后
有没有通用的方法来做到这一点?我将 EF4 与默认实体类生成(不是 POCO)一起使用。
这些实体将被附加,因此应跟踪它们的更改。我看不到通过IEntityWithChangeTracker
界面执行此操作的方法。
遍历导航属性会很好,但是仅仅报告更改的原始属性就足够了。
我想阅读其中的更改EntityObject
以包含在报告中。
例如:
名称:
之前之后地点:
之前之后
有没有通用的方法来做到这一点?我将 EF4 与默认实体类生成(不是 POCO)一起使用。
这些实体将被附加,因此应跟踪它们的更改。我看不到通过IEntityWithChangeTracker
界面执行此操作的方法。
遍历导航属性会很好,但是仅仅报告更改的原始属性就足够了。
您可以检索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];
}
这不会处理导航属性,我不确定它如何处理复杂类型。
除了 Ladislav Mrnka 的建议:不是很通用,但至少是一个可能的解决方案:代码生成和 T4 文本模板。这允许您在生成模型时向每个实体添加自己的自定义逻辑。
在您的情况下,您可以实现所需的遍历功能来检查导航属性。