A ligação estreita quando o comando é descartado e a conexão é definida diretamente no comando?

StackOverflow https://stackoverflow.com/questions/410222

  •  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
}
Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top