none
LINQ to SQL で DataContext に変更があったか確認する方法 RRS feed

  • 質問

  • お世話になっております。
    現在、ユーザがフォームから LINQ to SQL を利用して、DataContext へアクセスして、編集・追加・削除などを行い、フォームを抜ける際にまとめて、今回の変更をDBへ反映させるか?を確認して、DataContext.SubmitChanges() するようなソフトを作成しようとしています。
    毎回の編集・追加・削除の際にはSubmitChanges しません。
    DataContext は、フォームのロード時にnewして生成しています。

    色々と調べてみたのですが、DataContext が フォームロード時と確認時で異なっている?(表現に誤りがあるかもしれませんが・・)ことを知ることが可能か分かりませんでした。
    ユーザが観覧だけで、何も変更を加えていなければ、確認を表示したくないため、何か良い方法はございますでしょうか?
    ご教授のほど、よろしくお願いいたします。

    • 編集済み kentahoga 2013年2月23日 7:56
    2013年2月19日 12:53

回答

  • DataContext.GetChangeSet()のDeletes,Inserts,Updatesのどれかが1以上だったら変更有じゃ駄目?

    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答としてマーク kentahoga 2013年2月19日 14:34
    2013年2月19日 13:37
  • gekka様 いつもお世話になっております。
    教えて頂きました、GetChangeSet() で解決できました。ありがとうございます。
    このように書いてみました。
    
    
    ChangeSet cs = DataContext.GetChangeSet();
    if ((1 <= cs.Inserts.Count) || (1 <= cs.Updates.Count) || (1 <= cs.Deletes.Count))
    {
        if (MessageBox.Show("書き込みますか?", "", MessageBoxButtons.YesNo) == DialogResult.Yes)
        {
            DataContext.SubmitChanges();
        }
    }
    DataContext.Dispose();
    • 回答としてマーク kentahoga 2013年2月19日 14:34
    • 編集済み kentahoga 2013年2月19日 14:36
    2013年2月19日 14:32

すべての返信

  • DataContext.GetChangeSet()のDeletes,Inserts,Updatesのどれかが1以上だったら変更有じゃ駄目?

    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答としてマーク kentahoga 2013年2月19日 14:34
    2013年2月19日 13:37
  • gekka様 いつもお世話になっております。
    教えて頂きました、GetChangeSet() で解決できました。ありがとうございます。
    このように書いてみました。
    
    
    ChangeSet cs = DataContext.GetChangeSet();
    if ((1 <= cs.Inserts.Count) || (1 <= cs.Updates.Count) || (1 <= cs.Deletes.Count))
    {
        if (MessageBox.Show("書き込みますか?", "", MessageBoxButtons.YesNo) == DialogResult.Yes)
        {
            DataContext.SubmitChanges();
        }
    }
    DataContext.Dispose();
    • 回答としてマーク kentahoga 2013年2月19日 14:34
    • 編集済み kentahoga 2013年2月19日 14:36
    2013年2月19日 14:32