IDataReader.Dispose()会关闭连接吗?

svi*_*gen 3 .net dispose idatareader

我继承的典型查询执行模式是这样的:

using (IDataReader r = query.ExecuteReader())
{
  while (r.Read())
  {
    // etc.
  }
}
Run Code Online (Sandbox Code Playgroud)

query.Connection敞开的后using退出块?

Bra*_*d M 6

ExecuteReader(CommandBehavior.CloseConnection)
Run Code Online (Sandbox Code Playgroud)

这将在datareader close()调用它的方法时关闭连接(当dispose()通过使用using块调用该方法时会发生这种情况.

理想情况下,您也可以usingSqlConnection对象中使用块(或dispose()finally块内手动调用),不仅要关闭连接,还要释放资源.


SLa*_*aks 5

不; 在您处置连接之前,连接不会关闭。

但是,如果您传递CommandBehavior.CloseConnection,连接将被关闭。