实体框架,更新前值的触发机制

时间:2012-06-27 17:32:54

标签: entity-framework-4.1

在EF中是否有更新对象的值?

e.g。当实体对象让我们说用户被保存时,我想知道更新用户对象值之前的记录目的。

谢谢,

1 个答案:

答案 0 :(得分:3)

如果您使用ObjectContext(edmx),则可以订阅SavingChanges活动。

context.SavingChanges += context_SavingChanges;

这样可以在执行SaveChanges()时访问原始值和当前值:

private void context_SavingChanges (object sender, EventArgs e)
{
    ObjectContext context = sender as ObjectContext;
    if (context != null)
    {
        foreach (ObjectStateEntry entry in context.ObjectStateManager
                                 .GetObjectStateEntries(EntityState.Modified))
        {
            // TODO: do some logging with these values.
            entry.OriginalValues;
            entry.CurrentValues;
        }
    }
}

如果你使用DbContext,你可以通过

进入活动
((IObjectContextAdapter)this).ObjectContext.SavingChanges