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 pháp mở/đóng kết nối SQL khi gọi:"mở/đóng" SqlConnection hoặc tiếp tục mở?
public static void AddSomething(string something)
{
using (SqlConnection connection = new SqlConnection("..."))
{
connection.Open();
// ...
connection.Close();
}
}
Nhưng tôi nghĩ rằng tránh mở và đóng một kết nối tiết kiệm hiệu suất. Tôi đã thực hiện một số xét nghiệm loooong thời gian trước đây với OleDbConnection lớp (không chắc chắn về SqlConnection), và nó chắc chắn giúp làm việc như thế này (như xa như tôi nhớ):
//pass the connection object into the method
public static void AddSomething(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 pháp (a) hoặc phương pháp (b)? Tôi đọc trên một câu hỏi stackoverflow khác mà kết nối tổng hợp hiệu suất lưu cho tôi, tôi không phải lo lắng chút nào ...
PS. Đó là một ứng dụng ASP.NET - các kết nối tồn tại chỉ trong một yêu cầu web. Không phải là một ứng dụng hoặc dịch vụ giành chiến thắng.
Chỉ cần một lời khuyên: Sử dụng sự kiện 'DbConnection.StateChange' để theo dõi các thay đổi về thay đổi trạng thái của kết nối (và có thể lưu trữ cục bộ) thay vì kiểm tra thuộc tính' DbConnection.State' trực tiếp. Nó sẽ giúp bạn tiết kiệm chi phí hiệu suất. – decyclone
Một chi tiết bị thiếu là cách thức này là một phần của yêu cầu trang. Nó là phương pháp duy nhất được gọi là hoặc là nó, như tôi giả định trong phản ứng của tôi, một trong nhiều phương pháp thats được gọi trong một reqest trang, nó ảnh hưởng đến câu trả lời là đúng;) –
David - LOTS của phương pháp như thế này đang được gọi là :) – Alex