2012-09-24 82 views
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(),它改變一切列表中的上下文。

我怎樣才能保存只有實際。

在此先感謝

+0

目前尚不清楚你想要什麼。什麼是「實際」?你想什麼時候可以撤消和什麼時候? (保存之前或之後)。不管它是什麼,你都不能保存上下文的一部分。 –

回答

0

我想到了這個相同的想法。您必須將每個修改存儲在堆棧的單獨上下文中,以便撤消然後重做。在加入之前,請撥打

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

然後,當你把它弄出來的撤消或重做堆棧,你只需要調用this.DBContext.SaveChanges(),然後用新的環境重新加載文本框。