Я всегда звонил Connection. Закройте в блоке finally, однако сегодня я узнал, что вы не должны этого делать :
Не вызывайте Close или Dispose для Connection, DataReader или любого другого управляемого объекта в методе Finalize вашего класса. В финализаторе вы должны освобождать только неуправляемые ресурсы, которыми непосредственно владеет ваш класс. Если ваш класс не владеет какими-либо неуправляемыми ресурсами, не включайте метод Finalize в определение класса
Таким образом, при понимании того, что удаление объекта SqlCommand не удаляет и не закрывает назначенный ему объект подключения, будет ли следующий (упрощенный код ниже) утилизировать объект команды и подключения одновременно? и мне действительно нужно вызывать Connection.Dispose, если я всегда вызываю Connection.Close?
Using cmd As New NpgsqlCommand(String.Empty, new connection())
cmd.CommandText = "some sql command here"
sqlCmd.Connection.Open()
...create and fill data table
sqlCmd.Connection.Close()
End Using