É melhor passar um SqlConnection aberto como parâmetro ou chamar um novo em cada métod

Se métodos / funções que chamarei envolverem a necessidade de um SqlConnection aberto, vou abrir isso no método que está chamando a função. Por exemplo

protected static void btnSubmit(){
   conn.Open();
   myMethod(someParam, conn);
   conn.Close();
}

protected static void myMethod(object someParam, SqlConnection conn){
   //Some SQL commands etc here..
}

Fiz isso para que eu:

Apenas abra e feche 1 SqlConnection por processo

No entanto, seria melhor estruturar meu código da seguinte forma:

protected static void btnSubmit(){
   myMethod(someParam);
}

protected static void myMethod(object someParam){
   SqlConnection conn = New SqlConnection(".....");
   conn.Open();
   //Some SQL commands etc here..
   conn.Close();
}

A vantagem que vejo de estruturá-lo desta maneira é:

Não preciso passar um parâmetro extra para cada método Se, posteriormente, o método não tiver mais um comando SQL, não haverá um parâmetro não utilizado sendo chamado cada vez que

A desvantagem que vejo para isso é:

E semyMethod é um método recursivo, então, quando se chamar, abrirá outroSqlConnection e assim por diante e assim por diante ..E sebtnSubmit está chamando vários métodos que exigem uma SqlConnection, cada um vai abrir e fechar uma nova conexã

Qual é a melhor maneira de fazer isso e qual é mais comu

questionAnswers(4)

yourAnswerToTheQuestion