在Dispose方法中关闭数据库连接是对的吗?

agn*_*zka 5 .net c# dispose database-connection

我怀疑我们的一个应用程序中使用的数据库连接并不总是关闭.我去看了代码,我找到了一个DataProviderSqlConnection对象的类.连接在这个类的构造函数中打开,并在它的Dispose方法中关闭(不要判断,我知道保持一个开放的连接是邪恶的,它不是我的代码而且它不是问题的重点).该Dispose方法实现如下:

protected virtual void Dispose(bool disposing)
{
    if (!_disposed)
    {
        if (disposing)
        {
            if (_conn != null)
                _conn.Close();
        }

        _disposed = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是:
它是否始终保证连接已关闭?
这段代码对吗?

我认为应该被_conn.Dispose()称为 - 我是对的,是否会影响不关闭连接(可能不是)?

Céd*_*Rup 8

永远不会自动调用Dispose.

在显式调用对象的Dispose方法之前,或者如果在using()块中使用了类,则不会关闭连接

更安全的方法是在终结器中调用dispose方法,并确保在调用Dispose方法时抑制终结器.

本文介绍了实现该模式的正确方法

希望能帮助到你 !

塞德里克