【问题标题】:Field change tracking in Entity Framework实体框架中的字段更改跟踪
【发布时间】:2011-08-30 07:58:46
【问题描述】:

有没有办法找出我的对象上更改了哪些字段。

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

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

【问题讨论】:

  • 您的域对象是如何生成的?您可能想要检查自我跟踪实体,生成的代码有一个对象更改跟踪器和事件挂钩,用于您可能想要使用的属性修改。
  • 我正在使用 POCO,但问题是我必须响应特定的字段更改。据我所知,ObjectStateManager 不提供该功能。

标签: .net entity-framework entity-framework-4 change-tracking


【解决方案1】:

为什么要为此使用ObjectStateManager?您有具有 getter 和 setter 的实体,因此只需将该逻辑触发器放在 setter 中。您还可以在您的实体上实现INotifyPropertyChanged,并在您所需的属性在实体外部发生更改时处理事件。

否则,您必须为实体使用ObjectStateManager 获取ObjectStateEntry 并比较其CurrentValuesOriginalValues。但这大多是错误的做法。逻辑应该由实体中的代码触发。

【讨论】:

  • 即使第二个解决方案是“脏”的,我想我还是会去的。一些相关数据正在进行批量处理,需要在保存之前完成。谢谢你的回答。你总是提供好的解决方案:)
猜你喜欢
  • 2011-04-23
  • 2014-12-08
  • 2011-10-27
  • 1970-01-01
  • 1970-01-01
  • 2012-10-26
  • 1970-01-01
  • 1970-01-01
  • 2011-09-09
相关资源
最近更新 更多