如何获取处于修改状态的实体的导航属性的原始值和当前值?

时间:2014-02-21 10:14:52

标签: entity-framework entity-framework-4

假设我有两张表:

Category
---------
Id
Name

Expense
---------------
Id
Name
CategoryId
Amount

如果有人通过用户界面更改了费用的详细信息,我如何获取费用类别的旧值和新值的详细信息?

到目前为止,我在ObjectContext课程中已经有了这个。

public override int SaveChanges(SaveOptions options)
{
    foreach (var entry in ObjectStateManager
            .GetObjectStateEntries(
            System.Data.EntityState.Modified))
    {
      if (entry.Entity is Expense)
      {
        var oldName = entry.OriginalValues["Name"];

        var newName = entry.CurrentValues["Name"];

        Debug.Print(
         string.Format(
            "The name of an expense changed from '{0}' to '{1}'", 
            oldName, newName));

        // How do I get the old and new values of the Expense
        // entity's relations/navigational properties
        // such as the old and new values of 
        // Expense.Category.Name?
      }
    }

    return base.SaveChanges(options);
}

澄清:

我必须补充一点,我知道如何使用另一个上下文获取这些属性,即在新的entry.Entity实例中找到ObjectContext,然后加载导航属性新ObjectContext实例中的Expense对象。

我的问题是 - 是否可以在不加载新上下文的情况下执行此操作?是否可以仅使用ObjectStateEntry对象来读取ObjectStateEntry.Entity对象的非标量/导航属性值?

0 个答案:

没有答案