在我的BaseController中
public class BaseController : Controller
{
protected ApplicationDbContext context;
public BaseController()
{
context = new ApplicationDbContext();
}
protected override void Dispose(bool disposing)
{
context.Dispose();
base.Dispose(disposing);
}
}
在我的HomeController中
public class HomeController : BaseController
{
public HomeController ()
{
}
//is this method still necessary?
protected override void Dispose(bool disposing)
{
context.Dispose();
base.Dispose(disposing);
}
}
如果我的BaseController已经具有override void Dispose(bool disposing)
来处理dbcontext,这是否意味着扩展它的控制器不再需要override void Dispose(bool disposing)
来处理dbcontext?
答案 0 :(得分:1)
当您从实现IDisposable
的类继承时,只有对自己的自己做一些清理,才应覆盖Dispose(bool)
方法。
您应该始终假设基类正在清理它们的混乱,并且只照顾您创建的新混乱(如果需要),然后让他们这样做通过调用base.Dispose
if 来覆盖Dispose
。
(类似地,如果您要使用一次性资源编写基类,则应确保使用自己的Dispose
清理自己的混乱)。