我正在尝试使用实体框架创建撤消/重做的过程。
我想创建一个这样的类:
public class multiContext
{
public int _id { get; set; }
public undoEntities _context { get; set; }
}
并为每个修改创建一个新的multiContext
private void btnSendB_Click(object sender, RoutedEventArgs e)
{
multiContext nContext = new multiContext { _id = multiContextManager.getEntityID(listEntities), _context = new undoEntities};
listEntities.Add(nContext);
foreach (TB1 item in gridA.SelectedItems)
{
item.Status = "B";
nContext._context.Entry(item).State = System.Data.EntityState.Modified;
nContext._context.SaveChanges();
}
refreshGrids();
}
但问题是当我在SaveChanges()时,它会改变列表中的所有上下文。
如何只保存实际内容。
提前致谢
答案 0 :(得分:0)
我想到了同样的想法。您必须将每个修改存储在堆栈中的单独上下文中,以便撤消,然后重做。在添加之前,请致电
this.DBContext.Entry(item).State = System.Data.EntityState.Modified;
然后当你从撤销或重做堆栈中取出它时,你只需要调用this.DBContext.SaveChanges()然后用新的上下文重新加载文本框。