Según mi otra pregunta aquí sobre los objetos desechables , ¿deberíamos llamar a Close () antes del final de un bloque de uso?
using (SqlConnection connection = new SqlConnection())
using (SqlCommand command = new SqlCommand())
{
command.CommandText = "INSERT INTO YourMom (Amount) VALUES (1)";
command.CommandType = System.Data.CommandType.Text;
connection.Open();
command.ExecuteNonQuery();
// Is this call necessary?
connection.Close();
}
c#
asp.net
using
sqlconnection
sqlcommand
John Bubriski
fuente
fuente

Desmontaje de SqlConnection desde el uso de .NET Reflector :
Llama a Close () dentro de Dispose ()
fuente
La palabra clave using cerrará la conexión correctamente, por lo que no se requiere la llamada adicional a Cerrar.
Del artículo de MSDN sobre agrupación de conexiones de SQL Server :
La implementación real de SqlConnection.Dispose usando .NET Reflector es la siguiente:
fuente
Usando Reflector , puede ver que el
Disposemétodo deSqlConnectionrealmente llamaClose();fuente
No, llamar a Dispose () en SqlConnection también llama a Close ().
MSDN: SqlConnection.Dispose ()
fuente
No, tener el bloque Using te llama
Dispose()de todos modos, por lo que no es necesario que llamesClose().fuente
Dispose()llamadasClose(), no viceversa?No, no es necesario cerrar una conexión antes de llamar a Dispose.
Algunos objetos (como SQLConnections) se pueden reutilizar después de llamar a Close, pero no después de llamar a Dispose. Para otros objetos, llamar a Close es lo mismo que llamar a Dispose. (Creo que ManualResetEvent y Streams se comportan así)
fuente
No, la clase SqlConnection hereda de IDisposable, y cuando se encuentra el final del uso (para el objeto de conexión), llama automáticamente a Dispose en la clase SqlConnection.
fuente