İş mantığımı statik yöntemlerle basit statik sınıflarda uyguladım. Bu yöntemlerin her biri çağrıldığında SQL bağlantısını açar / kapatır:
public static void DoSomething(string something)
{
using (SqlConnection connection = new SqlConnection("..."))
{
connection.Open();
// ...
connection.Close();
}
}
Ancak bir bağlantıyı açıp kapatmaktan kaçınmanın performanstan tasarruf ettiğini düşünüyorum . Çok uzun zaman önce OleDbConnection sınıfıyla (SqlConnection hakkında emin değilim) bazı testler yaptım ve kesinlikle böyle çalışmasına yardımcı oldu (hatırladığım kadarıyla):
//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();
}
}
Öyleyse soru şu - (a) yöntemini mi yoksa (b) yöntemini mi seçmeliyim? Başka bir yığın aşımı sorusunda, bağlantı havuzlamasının performansı kaydettiğini okudum, hiç uğraşmam gerekmiyor ...
PS. Bu bir ASP.NET uygulamasıdır - bağlantılar yalnızca bir web isteği sırasında mevcuttur. Kazanma uygulaması veya hizmet değil.
DbConnection.StateChangekontrol etmek yerine bağlantının durum değişikliğindeki (ve yerel olarak depolanabilir) değişiklikleri izlemek için olayı kullanınDbConnection.State. Size performans maliyetinden tasarruf sağlayacaktır.