我正在更新表中的数据,然后更新其在其他历史记录表中的更新插入日期,其中包含与第一个表相同的字段。
我的代码是:
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);
}
请指导我,谢谢。
答案 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();
}