在哪里初始化数据库连接比较好

Where is it better to initialise the Database connection

我正在做一个项目,在编码时我很困惑,关于在 class 的构造函数或我正在使用它的函数中初始化连接的位置。

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

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

哪种方法更好?

当您使用 using 时,您正在处理结束时的对象}。如果您尝试再次使用已释放的 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;
    }
}

除非需要,否则不要创建对象。最好在 Using 块中启动您的 ConnectionString。 Using 调用 ConnectionString 的 Dispose() 方法并告诉 GC 收集它。

更多信息:

Establishing the Connection

在“using”块中,SqlConnection 是在 return 上关闭还是异常?