10

背景:
データベースへのクエリを処理する中間層ロジックからインターフェイスロジックをうまく分離したアプリケーションがあります。私は多くのカスタムソートとナローイングを行うので、多くのSqlDataSourceを使用せず、代わりにSqlCommandsを使用して多くのストアドプロシージャを呼び出します。

フォーム認証を使用して、保護されたサブディレクトリを作成しています。保護されたディレクトリのweb.configファイルには、より高い特権の役割を持つユーザーにリンクする接続文字列が多くあります。

質問:
繰り返しコードを切り取るために中間層でSqlConnectionオブジェクトを共有する必要がありますか、それとも操作ごとに新しいインスタンスを作成する必要がありますか?保護されたストアドプロシージャにアクセスするために接続文字列を変更する必要がある場合は、共有SqlConnectionを再インスタンス化できます。ここにベストプラクティスはありますか?

4

3 に答える 3

12

リソースを節約するために共有することを心配する必要はありません。.NETがこれを管理し、デフォルトで接続プールを実行します。明確で理解しやすいようにコードを記述し、.NETにこれらの詳細を処理させます。

于 2010-02-02T22:44:39.450 に答える
10

usingステートメントを使用して、必要な数のSqlConnectionsをできるだけ短期間で作成します。

using (var connection = new SqlConnection(...)) {
  connection.Open();
  ...
}

SQL接続は接続プールから取得され、競合を自動的に管理します。

参照: http: //msdn.microsoft.com/en-us/library/8xx3tyca (VS.80).aspx

于 2010-02-02T22:45:04.680 に答える
2

新しいものを作成し(そして適切に破棄し)、接続プールを利用します。

于 2010-02-02T22:44:46.317 に答える