0

いくつかのテキスト ボックスと [保存] ボタンを含む Windows フォームがあります。フォームが読み込まれると、モデル内のエンティティからのデータがテキスト ボックスに入力されます。ユーザーが保存ボタンをクリックすると、各テキストボックスの値がエンティティに書き戻され、SaveChanges が呼び出されてデータがデータベースにコミットされます。

私が知りたいのは、フォームに変更が含まれているかどうかを確認する最良の方法は何ですか? 変更が含まれていない場合は、SaveChanges を呼び出す必要はなく、データベースへのレコードの書き込みを保存できます。変更が含まれていて、ユーザーが [保存] ボタンをクリックしていない場合、変更を保存する必要がないというユーザーの確認を取得したいと考えています。

エンティティのフィールドを更新してから、SaveChanges を呼び出す前にその State プロパティを確認することもできると思いましたが、同じ値であってもフィールドを更新すると、エンティティが変更済みとしてマークされるため、これは失敗します。

私の質問は、SaveChanges を呼び出す前にフォームに実際に変更が加えられたことを確認する最善の方法は何ですか?

ありがとう、

マット

4

2 に答える 2

0

エンティティの状態を確認できます。テキストボックスからエンティティにデータを保存するだけで、EntityStateEntityState.Unchangedであるかどうかを確認できます。

詳細はこちら: http: //msdn.microsoft.com/en-us/library/system.data.entitystate.aspx

于 2011-09-06T09:50:00.790 に答える
0

前の値と同じ値でもフィールドを実際に更新すると、変更されたエンティティとしてカウントされ、ほとんどの場合、これは正しいビジネス ルールです。

あなたができることは、フォームフィールドを埋めるために使用された元のオブジェクトのコピーを保持し、等値比較子を使用して現在のものと比較することです. きれいではありませんが、オブジェクト状態管理者の変更された意見を当てにすることができない特定のケースで仕事を成し遂げます。

于 2011-09-06T13:11:16.880 に答える