5

我想阅读其中的更改EntityObject以包含在报告中。

例如:

名称: 之前之后

地点: 之前之后

有没有通用的方法来做到这一点?我将 EF4 与默认实体类生成(不是 POCO)一起使用。

这些实体将被附加,因此应跟踪它们的更改。我看不到通过IEntityWithChangeTracker界面执行此操作的方法。

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

4

2 回答 2

9

您可以检索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];
}

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

于 2012-08-14T14:06:48.080 回答
1

除了 Ladislav Mrnka 的建议:不是很通用,但至少是一个可能的解决方案:代码生成和 T4 文本模板。这允许您在生成模型时向每个实体添加自己的自定义逻辑。

在您的情况下,您可以实现所需的遍历功能来检查导航属性。

于 2012-08-14T14:20:35.180 回答