ASP.NET身份-我需要在控制器中手动处理ApplicationDbContext吗?

时间:2018-10-29 18:32:36

标签: asp.net asp.net-mvc asp.net-identity dispose

我有自己的控制器,在其中创建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

0 个答案:

没有答案