2011-08-30 100 views
0

有没有方法可以找出我的对象上已更改的字段。实体框架中的字段更改跟踪

示例问题:当某个日期字段被更改并且正在保存更改时,自定义一些自定义逻辑应该应用于相关对象。

我想在context.SaveChanges();之前做,但ObjectStateManager并没有给我所需要的所有信息。

+0

您的域对象是如何生成的?您可能希望查看自我跟踪实体,生成的代码具有对象更改跟踪器和事件挂钩,以便您可能要使用的属性修改。 – Mahol25

+0

我正在使用POCO的,但事情是我必须对特定领域的变化做出回应。就我所见,ObjectStateManager不提供这种功能。 –

回答

1

为什么要使用ObjectStateManager呢?你有拥有getter和setter的实体,只需将该逻辑触发器放入setter中即可。您还可以在您的实体上实施INotifyPropertyChanged,并在您的所需属性更改为实体外时处理事件。

否则,您必须使用ObjectStateManager得到ObjectStateEntry为实体并比较它的CurrentValuesOriginalValues。但这主要是错误的方法。逻辑应该由实体中的代码触发。

+0

即使第二种解决方案是“脏”,我想我会去用它。有一些相关数据正在进行批量处理,需要在保存之前完成。谢谢你的回答。你总是提供好的解决方案:) –