我有自己的控制器,在其中创建ApplicationDbContext的私有实例。问题是,是否需要在每个自定义控制器中编写Dispose方法,例如对于常规DbContext,还是ApplicationDbContext具有一些基类来继承Dispose方法?
public class DashboardController : Controller
{
private ApplicationDbContext db = new ApplicationDbContext();
public ActionResult Home()
{
return View();
}
public ActionResult Carousels()
{
IList<Carousel> list = db.Carousels.ToList();
if (list.Count() == 0)
{
ViewBag.Carousels = "0";
return View();
}
ViewBag.Carousels = "1";
return View(list);
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
}
我正在使用从asp.net Identity生成的ApplicationDbContext,在其中添加了自定义类,因此我需要ApplicationDbContext的实例来调用对象列表。如果我在ApplicationDbContext旁边有自己的DbContext,通常会创建BaseController类,在该类中重写Dispose方法,因此不需要在每个控制器中都编写它。 问题是我不知道身份如何在幕后完全起作用。在Identity内是否还有其他地方可以覆盖Dispose方法,或者我可以使用将包含覆盖Dispose方法的基本控制器,就像我在控制器内部使用任何其他DbContext一样? 我猜基本问题是...身份的ApplicationDbContext与任何DbContext是否有任何区别,因为它是从IdentityDbContext继承而来的,而不是DbContext