我是否必须在MVC中明确部署我的数据库连接对象?

时间:2014-01-01 12:38:09

标签: asp.net-mvc-4

是否在我的控制器中使用dispose()方法显式处理数据库连接对象?

由于基本Controller类已经实现了IDisposable接口,我是否需要在我的控制器中放置一个dispose()?

或者垃圾收集器是否会为我做这件事......如果是这样的话有什么意义呢?

2 个答案:

答案 0 :(得分:1)

是的,您应该使用像Selman22所示的“使用”声明来关闭它。在垃圾收集器超出范围之后等待垃圾收集器处理连接的问题是垃圾收集器只在应用程序需要内存时才处理连接。垃圾收集器不会经常清理对象,因为它们超出了范围。如果您的应用程序没有使用大量内存,则可能需要一段时间才能关闭该连接。

答案 1 :(得分:0)

使用using语句

using(var connection = new SqlConnection())
{
  ...
}

相当于:

try
{
   var connection = new SqlConnection()
    ...
}
finally
{
  connection.Dispose()
}