静的メソッドを使用した単純な静的クラスにビジネスロジックを実装しています。これらの各メソッドは、呼び出されたときにSQL接続を開閉します。
public static void DoSomething(string something)
{
using (SqlConnection connection = new SqlConnection("..."))
{
connection.Open();
// ...
connection.Close();
}
}
しかし、接続を開いたり閉じたりしないようにすると、パフォーマンスが向上すると思います。私はOleDbConnectionクラス(SqlConnectionについては不明)を使用してかなり前にいくつかのテストを行いましたが、(私が覚えている限り)このように動作することは間違いなく役立ちました。
//pass the connection object into the method
public static void DoSomething(string something, SqlConnection connection)
{
bool openConn = (connection.State == ConnectionState.Open);
if (!openConn)
{
connection.Open();
}
// ....
if (openConn)
{
connection.Close();
}
}
だから問題は-私は方法(a)と方法(b)のどちらを選ぶべきか?私は、接続プールによってパフォーマンスが節約されたという別のstackoverflow質問を読みました。まったく気にする必要はありません...
PS。これはASP.NETアプリです-接続はWebリクエスト中にのみ存在します。勝利のアプリやサービスではありません。
DbConnection.StateChange
チェックする代わりに、イベントを使用して、接続の状態変化(およびローカルに保存される場合もあります)の変化を監視しますDbConnection.State
。それはあなたのパフォーマンスコストを節約します。