我想知道我是否正确做这种工作?
这是一个简单的例子。
public class HomeController : Controller
{
MYDBContext db = new MYDBContext();
public ActionResult Index()
{
//do some thing with db here
return View("~/Views/Home/Index.cshtml");
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
}
所以,我正在控制器的顶部创建一个db对象。在控制器处理时处理它?
我想知道是否因为未关闭的数据库连接而导致内存泄漏?
编辑:这是一个MVC项目。
就数据库连接问题而言,.NET为您在应用程序中使用的每个连接字符串维护一个连接池,这是出于性能原因(因为打开和关闭连接通常可能在性能方面成本很高)。该池具有特定的最小和最大大小(由MinPoolSize和MaxPoolSize连接字符串参数控制)。当你打开一个连接(通过SqlConnection.Open) - 它可能会从池中取出而不是真的重新打开。当您关闭连接时(也通过处理EF上下文完成) - 连接可能会被放入池中,而不是真正关闭。当连接空闲一段时间后,它可能会从池中删除。