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 に答える