しばらく前に、すべてのデータベース行が のサブクラスで表される .net アプリ用の ORM レイヤーを作成しましたDatabaseRecord
。Load()
などのメソッドがいくつかありますSave()
。私の最初の実装では、DatabaseRecord
たとえばのコンストラクターで DB への接続を作成しました。
connection = new SqlConnection(
ConfigurationManager.ConnectionStrings["ConnectionName"].ConnectionString
);
次に、データベースにアクセスするメソッドの最初と最後で、その SqlConnection に対してOpen()
andを呼び出します。Close()
これは、(プログラミングには精通しているが、c# と .net には慣れていない) 私には、物事を行うための最も効率的な方法であると思われました。
私はちょうどいくつかの読書をしてきましたが、このパターンは多くの場所で推奨されているようです:
using (var connection = new SqlConnection(...)) {
connection.Open();
// Stuff with the connection
connection.Close();
}
なぜそれが望ましいのかがわかりDispose()
ます.途中で行ったことがキャッチされない例外を引き起こしたとしても、接続は自動的に行われます. このように何度も呼び出す可能性があるため、オーバーヘッドがどのようなものか疑問に思っていましたnew SqlConnection()
。
接続プールがオンになっているため、オーバーヘッドは最小限であり、2 番目のアプローチがベスト プラクティスであると思いますが、私の仮定が正しいことを確認したかっただけです。