MVC 5 - 控制器配置方法

use*_*648 5 dispose controller class dbcontext asp.net-mvc-5

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

protected override void Dispose(bool disposing)
{
    if (disposing)
    {
        db.Dispose();
    }
    base.Dispose(disposing);
}
Run Code Online (Sandbox Code Playgroud)

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

提前致谢.

Chr*_*att 5

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

对于您的服务,虽然服务类上可能有一个上下文字段,但您是通过构造函数将上下文注入到服务中,而不是让服务实例化它。因此,将不会为服务处置上下文的,因为它没有“自己的”,它是适当的。

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