У мене бізнес-логіка реалізована в простих статичних класах зі статичними методами. Кожен з цих методів відкриває / закриває з'єднання SQL при виклику:
public static void DoSomething(string something)
{
using (SqlConnection connection = new SqlConnection("..."))
{
connection.Open();
// ...
connection.Close();
}
}
Але я думаю, що уникнення відкриття та закриття з'єднання економить продуктивність . Я зробив декілька тестів довгий час з класом OleDbConnection (не впевнений у SqlConnection), і це, безумовно, допомогло працювати так (наскільки я пам’ятаю):
//pass the connection object into the method
public static void DoSomething(string something, SqlConnection connection)
{
bool openConn = (connection.State == ConnectionState.Open);
if (!openConn)
{
connection.Open();
}
// ....
if (openConn)
{
connection.Close();
}
}
Отже, питання - чи слід вибрати метод (а) чи метод (б)? Я читав на іншому запитанні stackoverflow про те, що об’єднання з'єднань зберегло для мене продуктивність, мені не потрібно взагалі турбуватися ...
PS. Це програма ASP.NET - з'єднання існують лише під час веб-запиту. Не виграш-додаток чи послуга.
DbConnection.StateChange
подію для моніторингу змін у зміні стану з'єднання (і може зберігатися локально), а не перевірятиDbConnection.State
властивість безпосередньо. Це заощадить ваші витрати на продуктивність.