2012-03-06 7 views
0

私はdb4oを使用しています。 私の質問は、ASP.NET Webフォームでデータベースを開く方法と閉じる方法のベストプラクティスについてです。 データベースのオープン方法とクローズ方法のベストプラクティス - db4o

私が使用して「システム」クラスを持っているなど、開閉データベースを前にして、それぞれの後に保存または更新、なぜならこれが意味するのオーバーヘッドのベストプラクティスではありません、インデックスの失われた

推測シングルトンパターンであり、これはデータベースに接続する唯一のクラスです。コンストラクタではデータベースをオープンしますが、クローズするタイミングやコミットするタイミングがわかりません。

  1. エラーが発生した場合は、保存した後にすべての時間を保存する必要がありますか?

  2. データベースはいつ閉じる必要がありますか? IDisposableインターフェイスを実装する必要がありますか?私は "System"クラスにデストラクタを追加する必要がありますか?

  3. 私はインデックスの紛失、保存、または更新する前に、それぞれの後にデータベースを開閉するので、これは意味オーバーヘッドのベストプラクティスではありません推測

答えて

4

など

それより良い方法はです。パフォーマンスの問題は、接続プーリングによって処理されます。

同じスコープ内に2つの保存と更新がある場合は、1つの接続を使用します。

ただし、接続をキャッシュしないでください。正しく解放することがずっと重要です。

経験則として、ローカル変数として、好ましくはusing() {}ステートメントで接続変数のみを使用します。フィールド/プロパティを作成しないでください。実際にはIDisposableなどが必要です。回避するようにしてください。

+0

ありがとうHenk。私はdb4oの創設者からこの質問を見つけました。彼はデータベースのオープンとクローズは良い考えではないと言います... db4oを使って作業することは、実際には他のデータベースエンジンとは異なると思います。 – Gonzalo

+0

私の答えは実際には一般的なデータベースに当てはまりますが、私はdb4oを知らないのです。 –

+0

ヘンクに感謝します。ここに質問へのリンクがあります:http://stackoverflow.com/questions/2998794/is-it-ok-to-open-a-db4o-file-for-query-insert-update-multiple- times – Gonzalo

0

コミットするときは、コネクターではなく、あなた次第です。私は閉鎖が特定のものと同じであると主張します。ページの最初の3回の呼び出しでデータベースを終了したら、残りの処理のために開いておくのはなぜですか?

これらの質問は、データベースの活動や設計よりもベストプラクティスに関するものです。

関連する問題