ASP.NET Identity - нужно ли вручную размещать ApplicationDbContext в контроллере? - PullRequest
0 голосов
/ 29 октября 2018

У меня есть свой собственный контроллер, где я делаю частный экземпляр 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);
    }
}

Я использую ApplicationDbContext, сгенерированный из удостоверения asp.net, где я добавил пользовательские классы, поэтому мне нужен экземпляр ApplicationDbContext для вызова списков моих объектов. В случае, когда у меня есть свой собственный DbContext, кроме ApplicationDbContext, я обычно делаю класс BaseController, где переопределяю метод Dispose, поэтому мне не нужно писать это в каждом контроллере. Проблема в том, что я не знаю, как личность полностью скрывается за сценой. Есть ли где-нибудь еще переопределение метода Dispose внутри Identity, или я могу использовать базовый контроллер, который будет содержать метод переопределения Dispose так же, как когда я использую любой другой DbContext внутри контроллера? Базовый вопрос, я думаю, будет ... Имеет ли ApplicationDbContext из Identity какие-либо отличия от любого DbContext, потому что наследуется от IdentityDbContext, а не DbContext

...