控制器和Dbcontext配置

时间:2017-01-08 16:26:22

标签: c# asp.net asp.net-mvc entity-framework asp.net-web-api

我正在使用全局异常处理程序处理未处理的异常。在处理请求期间发生未处理的异常时,控制器的dispose方法是否被调用? (在MVC和Web API中都有?)

例如,我试图在整个请求中使用相同的EF dbcontext。使用这个基类是否安全:

public abstract class BaseController : Controller
{
    public BaseController()
    {
        Database = new DatabaseContext();
    }

    protected DatabaseContext Database { get; set; }

    protected override void Dispose(bool disposing)
    {
        Database.Dispose();
        base.Dispose(disposing);
    }

}

1 个答案:

答案 0 :(得分:0)

迟到的答复,但是......我不确定是否有处理,保证在所有边缘情况下运行。但是你应该很容易测试你的场景。

据说,根本没有处理你的dbcontext实际上并不重要。 AAs原则应该作为良好做法。但是,正如Jon Gallants博客文章here所指出的,根据MS开发者的说法,这是没有必要的。因此,它很可能根本不重要,在极少数情况下,你的dbcontext没有被处理掉。

除此之外我认为只要你尊重你的语境边界就应该对你安全。 I.E不会在请求中的不同线程上以并行方式运行操作,例如,使用此上下文实例。