.NET Remotingを使用するクライアントサーバーアプリケーションがあります。
私は、アプリケーションDBQueryのサーバー部分にヘルパークラスを持っています。
DBQueryはDatabaseConnectionとSQLCommandオブジェクトCommanderを保持し、渡されたクエリを実行します。.NET Remotingサーバーアプリケーションでデータベース接続オブジェクトを静的にする必要があります
クエリが実行されるたびに、Commanderが開いている接続を確認します。
(必要に応じてCommanderを再作成します)
私はDBConnectionを静的にする必要がありますか? は
電流特性は、以下に定義された(のDBConnectionはコマンダ、DBConnection.CreateCommand()
作成):
/// <summary> connection used for querying with </summary>
public DBConn DBConnection
{ get { return _conn ?? (_conn = new DBConn()); } }
/// <summary> Command object for processing the queries </summary>
private SqlCommand Commander
{
get
{
return _commander ??
(_commander = DBConnection.Connection.CreateCommand());
}
}
DBConn
からSqlConnection
をラップし、インフラが接続を行っている
ですが、それはそれ自身の接続を使用するすべての単一のクエリではありませんか?私はむしろDB接続自体を人生のDBQueryに結びつけたいと思います。(そのようにして、複数のクエリに対して1つの接続を再利用することができます。)しかし、DBQueryのすべての用途を '使用する 'ブロック? – Raystorm
このようにコードを記述する場合にのみ、複数のクエリに対して同じ接続を再利用することは何もありません。 '使用する 'ことを回避する必要性については、なぜあなたはしたいですか?それは慣例の問題ではなく、オブジェクト*を正しく使うことの問題です。 LinqからSQl、Entity Framework、そして他のORMを見てください。ほとんどの場合、 'using'パターンを使用する必要があります。なぜなら、データベースと対話する正しい方法だからです。正しい処分は単なる賢明なものではありません。サーバ自体はあなたがそれを完了したことを知る必要があるので、別のDBの他のクライアントにサービスすることができます –
分かりやすいコマンドオブジェクトのためにIDisposableも実装します。 –