MVC 5 - 控制器配置方法

时间:2014-12-15 11:56:54

标签: class controller asp.net-mvc-5 dispose dbcontext

我正在开发一个MVC 5互联网应用程序。我的控制器中有以下方法:

protected override void Dispose(bool disposing)
{
    if (disposing)
    {
        db.Dispose();
    }
    base.Dispose(disposing);
}

如果我在此控制器中有一个使用相同db对象的服务类,我是否需要在此服务类中使用Dispose()方法,或者使用Dispose()方法在控制器中处理这个?

提前致谢。

1 个答案:

答案 0 :(得分:4)

一般情况下:班级应处理其负责的任何一次性用品。责任本质上归结为它是否“拥有”依赖性。换句话说,如果它是该类上的一个字段,该类将其实例化,那么它也应该将其处理掉。

对于您的服务,虽然服务类上可能存在上下文字段,但您通过构造函数将上下文注入服务,而不是让服务实例化它。因此,适合处理上下文的服务,因为它不“拥有”它。

此外,如果您使用依赖注入容器,使控制器不再实例化上下文,而只是将其注入其构造函数中,那么您也不应该将它丢弃在控制器中。 DI容器最终将负责处置。