A ligação estreita quando o comando é descartado e a conexão é definida diretamente no comando?
-
03-07-2019 - |
Pergunta
Eu sei que um monte de exemplos existem onde um SqlConnection é definido e, em seguida, um SqlCommand é definida, tanto em Usando blocos:
using (var conn = new SqlConnection(connString)) {
using (var cmd = new SqlCommand()) {
cmd.Connection = conn;
//open the connection
}
}
A minha pergunta:? Se eu definir a conexão diretamente na SqlCommand, faz a ligação estreita quando o comando está disposto
using (var cmd = new SqlCommand()) {
cmd.Connection = new SqlConnection(connString);
//open the connection
}
Solução
Não, SqlCommand nunca tenta fechar / dispose da conexão.
Outras dicas
Não, o objeto de conexão não serão eliminados até eliminá-lo explicitamente. Mas a minha recomendação é usar usando blocos sempre que puder.
Não fechar a conexão, você precisa se quer fechá-la a si mesmo ou colocá-lo em seu próprio usando statment.
Também aqui é uma dica para fazer seus blocos using
um pouco mais legível:
using (var conn = new SqlConnection(connString))
using (var cmd = new SqlCommand())
{
cmd.Connection = conn;
}
@milot
Mas a minha recomendação é usar usando blocos sempre que puder.
Usando usando blocos é bom, mas inútil quando se trabalha com objetos não IDisposable e por isso este pode ser confuso se você usar Usando blocos em qualquer lugar.
Tenha cuidado uma vez que seus objetos podem não ser Disposed se eles não implementa IDisposable.
Espero que isso ajude.