Ho implementato la mia logica aziendale in semplici classi statiche con metodi statici. Ciascuno di questi metodi apre / chiude la connessione SQL quando viene chiamato:
public static void DoSomething(string something)
{
using (SqlConnection connection = new SqlConnection("..."))
{
connection.Open();
// ...
connection.Close();
}
}
Ma penso che evitare di aprire e chiudere una connessione salvi le prestazioni . Ho fatto alcuni test molto tempo fa con la classe OleDbConnection (non sono sicuro di SqlConnection), e sicuramente ha aiutato a funzionare in questo modo (per quanto ricordo):
//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();
}
}
Quindi la domanda è: devo scegliere il metodo (a) o il metodo (b)? Ho letto su un'altra domanda di stackoverflow che il pool di connessioni mi ha salvato le prestazioni, non devo preoccuparmi affatto ...
PS. È un'app ASP.NET: le connessioni esistono solo durante una richiesta web. Non una win-app o un servizio.
DbConnection.StateChange
evento per monitorare i cambiamenti nel cambiamento di stato della connessione (e può essere archiviato localmente) invece di controllareDbConnection.State
direttamente la proprietà. Ti farà risparmiare sui costi delle prestazioni.