Лучше ли передавать открытый SqlConnection в качестве параметра или вызывать новый в каждом методе?

Если методы / функции, которые я собираюсь вызвать, связаны с необходимостью открытого SqlConnection, я открою это в методе, который вызывает функцию. Например:

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

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

Я делаю это так, чтобы я:

Только когда-либо открывать и закрывать 1 SqlConnection на процесс

Тем не менее, было бы лучше структурировать мой код следующим образом:

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();
}

Преимущество структурирования таким образом:

Мне не нужно передавать дополнительный параметр для каждого методаЕсли позже в методе больше не будет команды SQL, не будет вызываться неиспользуемый параметр каждый раз

Недостаток, который я вижу в этом:

ЕслиmyMethod это рекурсивный метод, то, когда он вызывает себя, он будет открывать другойSqlConnection, И так далее, и так далее..ЕслиbtnSubmit вызывает несколько методов, которые все требуют SqlConnection, каждый собирается открыть и закрыть новое соединение.

Каков наилучший способ сделать это, и который чаще всего практикуется?

Ответы на вопрос(2)

Ваш ответ на вопрос