1

複数のテーブルを持つデータベースを維持するビジネス Web アプリケーションを開発しています。要件の 1 つは、データベースに影響を与えずに「作業を保存」し、後でそれを取得して作業を続行できることです。複数の「節約」をサポートする必要があります。

この管理ツールは、ASP.NET MVC4 または Microsoft の LightSwitch で開発されますが、まだ決定していません。

私が抱えている問題は、これを構造的に解決する方法がわからないことです。この問題に対する既知の手法はありますか? 私を正しい方向に向けるために誰かの助けが必要です.私はここで立ち往生しています..

編集:シナリオでさらに説明しようとします

  1. 1 つの行に変更を加えて保存しましたが、その変更は自分だけが見ることができます (メイン データベースには影響しません)。

  2. 1. の変更が悪いことに気づき、同じ行のデータを変更することからやり直すことを選択し、別の行にも変更を加えます。これらの変更を保存します (ただし、私のみ)

  3. これで、(ステップ 1 と 2 からの) 2 つの節約ができました。考えを変えて、1. で行った変更は正しく、その「savefile」を開いて、変更をメイン データベースにコミットします。次に、手順 2 の「savefile」を削除します。

状況がより明確になることを願っています。

ありがとう

4

2 に答える 2

1

私が考える最も簡単な方法は、データベースに作業を任せることです。

あなたは出来る:

  1. ある種の「ステータス」列 (「コミット済み」、「未コミット」など) をテーブルに追加し、「実際の」データを表示するグリッド内の「未コミット」レコードを除外します。次に、編集グリッドで別の方法でフィルタリングして、「コミットされていない」レコードのみを表示するか、ステータスの代わりに ID を保存できる場合は、自分のレコードのみを表示することもできます。
  2. 実際のテーブルを余分な列で「汚染」するのではなく、コミットされていないレコードを保持する別のテーブルを追加します。

それは理にかなっていますか?

于 2013-04-05T12:13:15.780 に答える
0

トランザクション型のバージョン管理システムを本当に構築しようとしているのであれば、これから大きな仕事が待っています。

SVN のようないくつかの一般的なツールを見て、それらがサポートする複雑さと機能のレベルを確認してください。

データベース内の部分的なトランザクションのロールバック、特に制約とトリガーを伴うトランザクションは非常に困難です。ほとんどすべてがどこかで問題に遭遇します。

また、コミットされていないトランザクションをデータベースの外部 (ローカルの XML 構造など) に保存し、必要に応じてコンポーネントを 1 回だけコミットすることを検討することもできます。

いずれにせよ、すべてのレコードを検索し、どのレコードをどのように処理するかを決定するためのインターフェイスが課題になります。元のアプリケーションは気にしないでください。

于 2013-04-05T12:26:22.393 に答える