zul*_*mal 8 c# idisposable sqlconnection
我有一个像这样的sqlConnection管理器类:
public class SQLConn {
public string connStr = System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];
private SqlConnection sqlConn;
public SqlConnection Connection()
{
sqlConn = new SqlConnection(connStr);
return sqlConn;
}
public void Open()
{
sqlConn .Open();
}
}
Run Code Online (Sandbox Code Playgroud)
如果我使用带有'using'语句的函数,例如:
var conn = new SQLConn();
using (conn.Connection())
{
String query = "Select * from table";
objSql = new SqlCommand(query, conn.Connection());
conn.Open();
DoSomething();
}
Run Code Online (Sandbox Code Playgroud)
自conn.Connection()返回SqlConnection对象后,using语句是否自动处理连接?或者,我是否必须在SqlConn类上实现IDisposable和自定义Dispose方法?
这甚至是一个好方法吗?我正在使用遗留代码,但我还无法使用ORM,但有没有办法简化现有模式来管理/创建SQL连接?
Mar*_*ell 12
该using语句将查看表达式的最终类型 - 即返回的内容.Connection(); 如果这返回的是什么IDisposable,那么你就可以了.
如果你弄错了,编译器会告诉你;-p(它不会让你使用using不是的东西IDisposable).
您应该注意创建两个连接的位置:
using (var c = conn.Connection()) // <==edit
{
String query = "Select * from table";
objSql = new SqlCommand(query, c); // <==edit
c.Open();
DoSomething();
}
Run Code Online (Sandbox Code Playgroud)
可能:
public SqlConnection Connection()
{
if(sqlConn == null) sqlConn = new SqlConnection(connStr); // <== edit
return sqlConn;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15163 次 |
| 最近记录: |