J'ai ma logique métier implémentée dans des classes statiques simples avec des méthodes statiques. Chacune de ces méthodes ouvre / ferme la connexion SQL lorsqu'elle est appelée:
public static void DoSomething(string something)
{
using (SqlConnection connection = new SqlConnection("..."))
{
connection.Open();
// ...
connection.Close();
}
}
Mais je pense qu'éviter d'ouvrir et de fermer une connexion économise les performances . J'ai fait quelques tests il y a très longtemps avec la classe OleDbConnection ( je ne suis pas sûr de SqlConnection), et cela a vraiment aidé à fonctionner comme ça (pour autant que je me souvienne):
//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();
}
}
La question est donc: dois-je choisir la méthode (a) ou la méthode (b)? J'ai lu sur une autre question de stackoverflow que le pool de connexions a économisé les performances pour moi, je n'ai pas à me soucier du tout ...
PS. C'est une application ASP.NET - les connexions n'existent que pendant une requête Web. Pas une application ou un service gagnant.
DbConnection.StateChange
événement pour surveiller les changements dans le changement d'état de la connexion (et peut être stocké localement) au lieu de vérifierDbConnection.State
directement la propriété. Cela vous fera économiser sur les coûts de performance.