私はObjectContext
EntityFrameworkを初めて使用し、「データベースファースト」のWinFormアプリケーションのライフサイクルについて質問があります。
説明のために、私が動物種の登録簿を作成しているとしましょう。
フォームの左側には、動物の種のリストがあります(牛、豚、犬など–これらは種ではなく属だと思いますが、気にしないでください!)。
フォームの右側には、選択した種のプロパティを表示および編集できるテキストボックス、コンボボックスなどがあります。
ユーザーが左側の種を選択するとき、私は使用します:
var species = context.Single(x => x.id == speciesID);
次に、右側のさまざまなコントロールをにバインドしspecies
ます。
生息地などのこれらのプロパティの一部は、コンボボックス(フォームの読み込み時にデータベースから入力されます。データベースで代理キーを使用しています)から選択されます。つまり、フォームの存続期間中、同じコンテキストを維持する必要があると思います。
これには2つの問題があると思います。
ユーザーは、コンテキストの存続期間中に多くの異なる種(数百が存在する)に変更を加えて、それを肥大化させる可能性があります。
理想的には、変更する前に現在の種(汚れている場合)への変更を保存したい場合は、新しい種を選択するときにユーザーにプロンプトを表示したいと思います。次に、変更を破棄するにはどうすればよいですか?オブジェクトを見たことをコンテキストに忘れさせるにはどうすればよいですか?
別の方法は、ユーザーが新しい種を選択するたびに新しいコンテキストを使用することですが、これは、同じコンテキストで作成され、バインドできるように、毎回複数のコンボボックスを再作成することを意味します。
私は何かが足りないのですか?
どうもありがとう