Uso la dichiarazione using per SqlConnection
. È buono per le prestazioni perché forza chiamare Dispose() che rilascia la connessione al pool prima possibile.L'istruzione using può essere sostituita da parentesi graffe?
Tuttavia, mi sono reso conto che l'oggetto creato nell'uso non può essere ridefinito. Non posso fare in questo modo:
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
//...
connection = new SqlConnection(connectionString2);
//...
connection = new SqlConnection(connectionString3);
}
Mi chiedevo se posso sostituire con, e fare qualcosa di simile:
{
SqlConnection connection = new SqlConnection(connectionString);
connection.Open();
//...
connection = new SqlConnection(connectionString2);
//...
connection = new SqlConnection(connectionString3);
}
Il SqlConnection
non sarà accessibile dopo l'ultima parentesi graffa }
. Sarà il Dispose() chiamato immediatamente quando l'oggetto esce dal campo di applicazione?
Grazie. Se si tratta di chiudere le connessioni, ovviamente chiamerei connection.Close() ma non l'ho scritto nel codice sopra. – nan
Anche se si chiama esplicitamente Close(), il secondo esempio ha ancora la possibilità di lasciare una connessione aperta se si verifica un'eccezione. Non solo usa la chiamata Dispose quando l'esecuzione lascia quel blocco, ma lo chiama anche quando si verifica un'eccezione. – ThatBlairGuy