1

これはおそらくかなり初心者の設計上の質問です。私は多くの要件に取り組み、ユーザーが求めているエクスペリエンスをユーザーに提供しようとしています...

大きな計算タイプのことを行うツールを作成しました。現在、クラス ライブラリとコマンド ライン ツール (個別の .NET プロジェクト) で構成されています。さまざまなテーブルをすべて 1 つのファイルにまとめることができるため、ファイルの種類として Access データベース形式を使用しています。アプリケーションに関する他のいくつかの項目: - 多くのユーザーはいません。スケーラビリティに関する懸念はありません。・更新に関して大きな懸念はない。・デスクトップが望ましい。ウェブではありません。- VB と .NET 3.5 SP1 を使用

次に、典型的なファイル/開くおよびファイル/保存タイプの操作を可能にする GUI フロント エンドを開発する必要があります。

ユーザーは、ファイルを開いて編集し、保存するか、保存せずに閉じるかを選択できることを期待しています。変更がファイルに書き戻されることはありません。保存すると、すべてのテーブルに影響するすべての変更がファイルに保存されます。

それでは、プロキシのようなものに一時ファイルを使用することは理にかなっていますか? ユーザーがファイルを「開いた」ときに、ソース Access ファイルをローカルの一時ファイルにコピーし、それを編集セッションに使用するには? 次に、ユーザーが「保存」した場合、ローカルの一時ファイルをソース パスにコピーしますか?

その質問は明確ですか?デザインがダサい???コメントや提案はありますか?

更新: [ms-access タグもタグ付け] また、ユーザーが典型的なファイル/名前を付けて保存機能も期待するという事実を省略しました。この投稿で問題にした設計は、伝統的にプロキシ設計パターンと呼ばれるものだと思います。以前にAccessデータベースファイルでこれを試した人はいますか? 注意やアドバイスは?

4

2 に答える 2

0

設計はきれいではないと思いますが、MS Access データベースを計算用の一種の「シナリオ」ファイルとして使用している場合は、このアプローチが最も簡単に目的を達成できます。

@drventureが述べたように、通常はトランザクションを使用して変更を保存するかどうかを制御しますが、アプリでは、アクセスデータベースを開いて、ユーザーの行動に応じてそのトランザクションをコミットまたは放棄するときに「グローバル」トランザクションを開始する必要があります. ただし、アクセスが長い間「開いている」複数のテーブルで複数の変更を伴うトランザクションをどのように処理するかはわかりません...

どちらのアプローチでも、アプリを閉じずに保存に対処する必要がありますか? かなり単純なトランザクション アプローチの場合: グローバル トランザクションをコミットし、すぐに新しいトランザクションを開始します。一時ファイルのアプローチでは、一時ファイルを閉じてから再度開き、アプリケーションの状態が保持または再確立されていることを確認する必要があるため、これはもう少し複雑になる可能性があります。

于 2010-11-01T08:23:24.353 に答える
0

まあ、そのアプローチはうまくいくでしょうが、それは世界で最も優れたデザインではありません. あなたが話しているのは、基本的にトランザクションです。トランザクションは、アトミックなデータベースへの一連の操作であり、すべてが実行されるか、いずれも実行されないかのいずれかです。

通常、トランザクションは BEGIN と COMMIT で囲みます。そうすれば、トランザクションにデータベース全体が関与するのではなく、その時点で作業している特定の部分のみが関与します。

しかし、あなたの説明からはわかりにくいです。あなたの場合、多分すべてか何も問題なく、あなたが説明した「アクセスファイルコピー手法」はうまくいくでしょう。

しかし、ユーザーが DB を開き、ここでいくつかの変更を加えてコミットし、そこでいくつかの変更を加えてから元に戻すことを期待している場合、それはうまく機能しません。

于 2010-10-29T20:59:36.947 に答える