Tôi có logic nghiệp vụ của mình được triển khai trong các lớp tĩnh đơn giản với các phương thức tĩnh. Mỗi phương thức này mở / đóng kết nối SQL khi được gọi:
public static void DoSomething(string something)
{
using (SqlConnection connection = new SqlConnection("..."))
{
connection.Open();
// ...
connection.Close();
}
}
Nhưng tôi nghĩ tránh mở và đóng kết nối sẽ tiết kiệm hiệu suất . Tôi đã thực hiện một số thử nghiệm trước đây với lớp OleDbConnection (không chắc chắn về SqlConnection) và nó chắc chắn đã giúp làm việc như thế này (theo như tôi nhớ):
//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();
}
}
Vì vậy, câu hỏi là - tôi nên chọn phương thức (a) hay phương thức (b)? Tôi đã đọc trên một câu hỏi stackoverflow khác rằng kết nối đã lưu hiệu suất cho tôi, tôi hoàn toàn không phải bận tâm ...
Tái bút Đây là một ứng dụng ASP.NET - các kết nối chỉ tồn tại trong một yêu cầu web. Không phải là một ứng dụng hoặc dịch vụ win.
DbConnection.StateChange
sự kiện để theo dõi các thay đổi trong thay đổi trạng thái của kết nối (và có thể được lưu trữ cục bộ) thay vì kiểm traDbConnection.State
trực tiếp thuộc tính. Nó sẽ giúp bạn tiết kiệm chi phí hiệu suất.