如果使用using子句,是否需要关闭DbConnection?

CJ7*_*CJ7 8 .net c# ado.net using dbconnection

可能重复:
使用块是否会关闭数据库连接?

db.Close()以下是不必要的?

using (DbConnection db = GetDbConnection())
{
   // do data-access stuff
   // ...

   db.Close();
}
Run Code Online (Sandbox Code Playgroud)

Nik*_*wal 12

如果使用using子句,是否需要关闭DbConnection?

不,如果使用using子句,则无需关闭DbConnection?

是的,这里没有必要,因为当using结束范围时,连接将意味着关闭和释放所有内存.

由于DBConnection实现了IDisposable接口,所以在Dispose方法中有close函数DBConnection.

但如果某些线条在近线之后,则它很有用

using (DbConnection db = GetDbConnection())
{
  // do data-access stuff
  // ...

  db.Close(); //Useless
}
Run Code Online (Sandbox Code Playgroud)

但这里很有用

using (DbConnection db = GetDbConnection())
{
  // do data-access stuff
  // ...

  db.Close(); //Useful

 // Some more code
}
Run Code Online (Sandbox Code Playgroud)

在那种情况下你可以做到

using (DbConnection db = GetDbConnection())
{
  // do data-access stuff
  // ...

}

// Some more code which was previously inside using section.
Run Code Online (Sandbox Code Playgroud)

  • 如果存在不使用连接的更多代码,则可以手动关闭设计的+1.但是,在这种情况下,最好不要在使用块中包含该代码. (4认同)

Mar*_*rco 2

据我所知,当Dispose()调用方法时,Close()会自动执行。
所以db.Close();这里没有必要。