私は現在MVC4プロジェクトに取り組んでおり、プレーンな古いSQLを使用し、EntityFrameworkに依存しないことにしました。
私の質問は、データベース接続を初期化するためのベストプラクティスは何ですか。接続を開き(接続文字列はWeb.configに格納されます)、アプリケーションのライフサイクル全体で確立された接続を使用するシングルトンを使用することを考えましたが、これが適切なアプローチかどうかはわかりません。
私は現在MVC4プロジェクトに取り組んでおり、プレーンな古いSQLを使用し、EntityFrameworkに依存しないことにしました。
私の質問は、データベース接続を初期化するためのベストプラクティスは何ですか。接続を開き(接続文字列はWeb.configに格納されます)、アプリケーションのライフサイクル全体で確立された接続を使用するシングルトンを使用することを考えましたが、これが適切なアプローチかどうかはわかりません。
データベース接続の場合は、できるだけ遅く開き、できるだけ早く閉じます。
シングルトン接続を使用する代わりに、必要に応じて接続オブジェクトを作成する必要があります。接続が実装され、接続が完了したら接続を破棄する必要があるため、using
ブロックを使用する方が適切です。IDisposable
ODP.NET
Singleton
接続プーリングをサポートしているため、OracleConnection
オブジェクトを保持する理由はありません (特定のケースで別の方法で証明されない限り) 。
ここでのベスト プラクティスは、ステートメントごとに接続 (物理接続ではなく、.NET 接続オブジェクト) を使用することです。
using(OracleConnection connection = ...)
{
...Do work here
}
今説明したものと同様のアプローチについて詳しく知りたい場合は、https ://stackoverflow.com/a/10153406/1289283 を参照してください。そんなジレンマに、私はすでに答えてきました。これは、アプリケーション単位ではなく、リクエスト単位で行うようにしてください。そうしないと、問題が発生します。アプリケーションごとは、Web アプリケーションではなく、単一ユーザーのデスクトップ アプリケーションでは問題ありません。また、これにもシングルトンを使用しないでください...