可能重复:
会使用块关闭数据库连接?
是db.Close()
不必要的下面?
using (DbConnection db = GetDbConnection())
{
// do data-access stuff
// ...
db.Close();
}
可能重复:
会使用块关闭数据库连接?
是db.Close()
不必要的下面?
using (DbConnection db = GetDbConnection())
{
// do data-access stuff
// ...
db.Close();
}
是否有任何需要关闭的DbConnection如果使用了使用条款?
不,没有必要关闭的DbConnection如果使用了使用条款?
和
是的,它是在这里不必要的,因为当范围using
两端,连接将部署意味着关闭和释放所有内存。
由于DBConnection
实现IDisposable
接口,关闭功能是有在Dispose
的方法DBConnection
。
但是,如果一些线路已经接近行之后则是有益的
using (DbConnection db = GetDbConnection())
{
// do data-access stuff
// ...
db.Close(); //Useless
}
但在这里它是有用的
using (DbConnection db = GetDbConnection())
{
// do data-access stuff
// ...
db.Close(); //Useful
// Some more code
}
在这种情况下,你可以做
using (DbConnection db = GetDbConnection())
{
// do data-access stuff
// ...
}
// Some more code which was previously inside using section.
只是要确保我已经检查了代码:)
protected override void Dispose(bool disposing)
{
if (disposing)
{
this._userConnectionOptions = (DbConnectionOptions) null;
this._poolGroup = (DbConnectionPoolGroup) null;
this.Close();
}
this.DisposeMe(disposing);
base.Dispose(disposing);
}
这是的SqlConnection的是从继承的DbConnection实施。 正如你可以看到有this.Close()方法:)
对于我所知道的,当时Dispose()
方法被调用, Close()
是自动进行的。
所以db.Close();
没有必要在这里。
在右括号中Dispose()
被调用。
我想在DbConnection
的Dispose
方法也将检查连接被关闭。 所以,不,它可能是没有必要的,但我个人认为这是很好的做法,提高了可读性,它不会影响性能,因为Close
将被称为这种或那种方式。
取出的编码从处置贯彻SqlConnection
(衍生的DbConnection
)类:
public void Dispose()
{
Dispose(true);
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
this.Close();
}
base.Dispose(disposing);
}
在using
关键字使用IDisposable
接口。 上述方法是该方法的实施。 它会关闭连接。