我正在开发一个项目,在进行编码时我感到很困惑,关于在类的构造函数或我正在使用它的函数中初始化连接的位置。
我在构造函数中的代码如下:
public class clsTest
{
private readonly MySql.Data.MySqlClient.MySqlConnection _dbInstance;
public clsTest()
{
_dbInstance = new MySql.Data.MySqlClient.MySqlConnection(ClsConnectionString.connectionString);
}
public bool insert(object model)
{
using (_dbInstance)
{
//do what ever you want to achieve
return true;
}
}
}
和第二种方法(即仅在函数中)是:
public List<tEntity> Getts()
{
using (var db = new MySql.Data.MySqlClient.MySqlConnection(ClsConnectionString.connectionString))
{
// do whatever you want to do
}
}
哪种方法更好?
答案 0 :(得分:0)
当你使用时,你正在处理关闭中的对象}。如果您再次尝试使用已处理的Connection对象,则会出现问题。
采用第二种方法来避免这种情况。
<强>更新强>
告诉你我的意思:
第一个电话:
public bool insert(object model)
{
using (_dbInstance) // This works
{
//do what ever you want to achieve
return true;
}//_dbInstance is disposed
}
第二个电话:
public bool insert(object model)
{
using (_dbInstance) //This does not work as _dbInstance was disposed in the first call
{
//do what ever you want to achieve
return true;
}
}
答案 1 :(得分:0)
在您需要的情况下,不要创建对象。最好在Using
块中启动ConnectionString。
Using
调用ConnectionString的Dispose()
方法并告诉GC收集它。
更多信息:
in a “using” block is a SqlConnection closed on return or exception?