0

EntitySet に変更を加えた Linq-to-SQL コンテキストがあります。最後に を呼び出してから行ったすべての変更を削除したいと考えていますSubmitChanges()。次のメソッドを使用して、コンテキストの状態を元に戻します。

public static void RevertChanges(this DataContext context)
{
    var changeSet = context.GetChangeSet();
    var inserts = changeSet.Inserts.ToList();
    var deleteAndUpdate = changeSet.Deletes.Concat(changeSet.Updates).ToList();

    foreach (var inserted in inserts)
    {
        var table = context.GetTable(inserted.GetType());   
        table.DeleteOnSubmit(inserted);
    }

    if (deleteAndUpdate.Count > 0)
    {
        context.Refresh(RefreshMode.OverwriteCurrentValues, deleteAndUpdate);
    }
}

EntitySetこれは、テーブルに基づくが更新されず、変更が保持されることを除いて、正常に機能します。

の変更を拒否する最善の方法は何EntitySetですか?

4

1 に答える 1

3

最良の方法?

using (DataContext dc = new DataContext)
{

}

それが確実な唯一の方法です。

2 番目に最適なオプションは、EntitySet を新しく作成し、それをプロパティに割り当てることです。同じ方法が designer.cs ファイルで行われます。

于 2010-07-06T19:37:38.483 に答える