如何从objectdateContext.SaveChanges()方法获取更新的实体

时间:2012-10-14 21:06:34

标签: c# entity-framework-4

我正在更新表中的数据,然后更新其在其他历史记录表中的更新插入日期,其中包含与第一个表相同的字段。

我的代码是:

 public void SaveChanges()
    {
      objectdateContext.SaveChanges();

      saveInHistoryTable(); // here how i can pass the current entity.
    }

 public void saveInHistoryTable(FirstTable f)
 {
    SecondTable s = new SecondTable();
    s.id = f.id;
    s.Name = f.Name;
    objectdateContext.Insert(s);
}

请指导我,谢谢。

2 个答案:

答案 0 :(得分:0)

saveInHistoryTable(); // here how i can pass the current entity.

到目前为止,实体已经很久了。您应该调用此方法,并在以。

中出现的任何方法进行更改后传入实体

您应该将这些问题分解为不同的方法。老实说,SaveChanges()不应包括备份“当前实体”。而且,您怎么知道只有一个实体被改变了?如果它是一个被更改的对象图,那么就不可能只传入一个对象并备份整个图。

答案 1 :(得分:0)

您可以在上下文中重载SaveChanges(),然后为ChangeTracker中的每个对象执行保存。

这是我之前使用过的一个例子(这是针对DbContext的,如果你有一个对象上下文,它会略有不同):

  public override int SaveChanges()
  {
     if( ChangeTracker.Entries().Any( e => e.State != EntityState.Unchanged ) )
     {
        //insert the entry into the History table
     }

     return base.SaveChanges();
  }
相关问题