정적 메서드를 사용하여 간단한 정적 클래스에서 비즈니스 로직을 구현했습니다. 이러한 각 메소드는 호출시 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)를 선택해야합니까? 연결 풀링이 저에게 성능을 저장했다는 또 다른 스택 오버플로 질문을 읽었습니다. 전혀 신경 쓸 필요가 없습니다.
추신. ASP.NET 앱입니다. 연결은 웹 요청 중에 만 존재합니다. 윈-앱이나 서비스가 아닙니다.
DbConnection.StateChange
사항 :DbConnection.State
속성을 직접 확인하는 대신 이벤트를 사용 하여 연결 상태 변경의 변경 사항을 모니터링 하십시오 (로컬에 저장 될 수 있음) . 성능 비용을 절약 할 수 있습니다.