Моя бизнес-логика реализована в простых статических классах со статическими методами. Каждый из этих методов открывает / закрывает соединение SQL при вызове:
public static void DoSomething()
{
using (SqlConnection connection = new SqlConnection("..."))
{
connection.Open();
// ...
connection.Close();
}
}
Но я думаю, что отказ от открытия и закрытия соединения экономит производительность. Я давно провел несколько тестов с классом OleDbConnection (не уверен насчет SqlConnection), и это определенно помогло работать вот так (насколько я помню):
//pass around the connection object into the method
public static void DoSomething(SqlConnection connection)
{
bool openConn = (connection.State == ConnectionState.Open);
if (!openConn)
{
connection.Open();
}
// ....
if (openConn)
{
connection.Close();
}
}
Итак, вопрос - что выбрать: метод (а) или метод (б)? Я прочитал в другом вопросе stackoverflow, что пул соединений сохранил для меня производительность, мне вообще не нужно беспокоиться ...
PS. Это приложение ASP.NET - соединения существуют только во время веб-запроса. Не беспроигрышное приложение или сервис.
DbConnection.StateChange
для отслеживания изменений в изменении состояния соединения (и может храниться локально) вместо непосредственной проверки свойстваDbConnection.State
. Это сэкономит вам затраты на производительность. - person decyclone   schedule 14.12.2010