我用静态方法在简单的静态类中实现了我的业务逻辑。这些方法中的每一个在调用时都会打开/关闭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();
}
}
所以问题是-我应该选择方法(a)还是方法(b)?我读了另一个stackoverflow问题,即连接池为我节省了性能,我完全不必费心...
PS。这是一个ASP.NET应用程序-连接仅在Web请求期间存在。不是Win-App或服务。
DbConnection.StateChange
事件来监视连接状态更改(可能存储在本地)中的更改,而不是DbConnection.State
直接检查属性。它将节省您的性能成本。