使用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.
}
}
我理解连接引用在主类中是相同的,所以理想情况下它应该关闭连接,但只是想确认我的理解是否正确,或者我应该手动关闭连接?
1条答案
按热度按时间omqzjyyz1#
是的,它将被关闭,因为这就是
SqlConnection
中的Dispose
方法所做的。请注意,一个返回任何实现
IDisposable
接口的类的示例的方法应该在调用它的任何时候返回一个新的示例,以防止在两个不同的方法(可能并行运行)处理对同一示例的引用时可能抛出ObjectDisposedException
。