asp.net 是否使用块关闭数据库连接

fkaflof6  于 2023-05-02  发布在  .NET
关注(0)|答案(1)|浏览(182)

使用block是否会关闭数据库连接,即使连接对象是在另一个类中创建的?
我看到多篇文章说,下面的代码会自动关闭连接,而不需要调用close()方法,我同意这一点。

using (SqlConnection conn = new SqlConnection(sConn))
{
    cmd.Connection = conn;
    // do database stuff
    //conn.Close(); //// Not required.
}

但在我的应用程序中,我们遵循这样的编码风格:

public class DBConnectionBackboneService : IDBConnectionBackboneService
{
    public OracleConnection GetDBConnection()
    {
        string conString = "<<Connection-String>>;
        return new OracleConnection(conString);
    }
}

class main()
{
    using (dbConnection = _dbConnectionRepo.GetDBConnection())
    {
        dbConnection.Open();

        // Call database procedure.

        // Work with dataset.
    }
}

我理解连接引用在主类中是相同的,所以理想情况下它应该关闭连接,但只是想确认我的理解是否正确,或者我应该手动关闭连接?

omqzjyyz

omqzjyyz1#

是的,它将被关闭,因为这就是SqlConnection中的Dispose方法所做的。
请注意,一个返回任何实现IDisposable接口的类的示例的方法应该在调用它的任何时候返回一个新的示例,以防止在两个不同的方法(可能并行运行)处理对同一示例的引用时可能抛出ObjectDisposedException

相关问题