初始化数据库连接的位置更好

时间:2018-01-19 12:30:55

标签: c# asp.net database database-connection

我正在开发一个项目,在进行编码时我感到很困惑,关于在类的构造函数或我正在使用它的函数中初始化连接的位置。

我在构造函数中的代码如下:

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
    }
}

哪种方法更好?

2 个答案:

答案 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收集它。

更多信息:

Establishing the Connection

in a “using” block is a SqlConnection closed on return or exception?