1

我正在尝试使用实体框架创建撤消/重做的过程。

我想创建一个这样的类:

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() 时,它会更改列表中的所有上下文。

我怎样才能只保存实际。

提前致谢

4

1 回答 1

0

我想到了同样的想法。您必须将每个修改存储在堆栈中的单独上下文中,以便撤消然后重做。在添加之前,调用

this.DBContext.Entry(item).State = System.Data.EntityState.Modified;

然后,当您将其从撤消或重做堆栈中取出时,您只需调用 this.DBContext.SaveChanges() 然后使用新上下文重新加载文本框。

于 2012-10-10T00:59:57.270 回答