0

次のようなデータ入力フォームがあります...

データ入力フォーム http://img192.imageshack.us/img192/2478/inputform.jpg

いくつかの空の行があり、それらのいくつかには値があります。ユーザーは既存の値を更新でき、空の行に値を入力することもできます。

これらの値を DB テーブルにマップする必要があり、そのうちのいくつかは新しい行としてデータベースに挿入され、既存のレコードが更新されます。

あなたの提案が必要です。このシナリオを最善の方法で達成するにはどうすればよいですか。

ありがとう

4

2 に答える 2

1

行ごとに、主キー (非表示)、ダーティ フラグ、および新しいフラグがあります。グリッドでは、変更が行われたときに「ダーティ」フラグを true に設定します。UI に新しい行を追加するときは、主キーを生成するだけでなく、新しいフラグを設定します (キーに GUID を使用すると、これが最も簡単になります)。次に、これをすべてサーバーにポストするときに、新しいフラグが設定されているときに挿入を行い、ダーティ フラグを持つものを更新します。

データのコミットが完了したら、dirty フラグと new フラグをクリアするだけです。

もちろん、データが複数の貢献者によって共有され、同時に編集できる場合、誰かが他の人の編集を上書きしたくない場合は、もう少し複雑になります。

于 2010-01-15T05:39:57.323 に答える
1

ADO.net を使用しDataSetsDataTables、カスタム データ グリッドのメモリ内のバッキング ストアとして使用することを検討します。ADO.net を使用すると、データベースからデータ セットを一括読み込みし、メモリ内のそのデータに対する挿入、更新、および削除を追跡できます。完了したら、保存されたトランザクションを一括処理してデータベースに戻すことができます。

ADO.net を使用することの大きな利点は、厄介な変更追跡コードがすべて既に作成されており、ライブラリがすべての .net 対応マシンに展開されていることです。

現在流行りではありませんが、XML シリアライゼーションを使用してネットワーク経由で ADO.net データ セットを送信して変更し、それを送り返してデータベースに処理させることもできます。

グーグル。ADO.net の使用方法に関する書籍、チュートリアル、およびブログ投稿は文字通り何千もあります。

于 2010-01-15T05:52:55.583 に答える