构造函数中的dbContext vs初始化

时间:2019-05-03 20:37:15

标签: c# linq

我对更好的做法感到困惑。此应用程序使用MVC 4在.net 4.5.1中。当我们在控制器中初始化数据库时,我们是用这种方式完成的

private EntitiesModel _dbContext;

protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
    _dbContext = new CompanyContextFactory().GetContextPerRequest();
    base.Initialize(requestContext);
}

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

我通常会像这样在控制器中初始化数据库:

private EntitiesModel _dbContext;

public ClientsController()
{
      _dbContext = new CompanyContextFactory().GetContextPerRequest();
}

哪个是更好的做法?我没有选择使用using语句的选项,因此我想将其放入构造函数中。以第一方式进行操作会引起问题吗?

1 个答案:

答案 0 :(得分:1)

就像这里还有其他事情一样,在您的代码库中,您需要为每个DbContext创建一个HttpRequest的实例。在ASP.NET MVC中,在构造控制器类实例时未分配HttpContext,因此为什么需要在控制器动作方法中创建实例。

以上所有内容都无法从您发布的代码中得到证明,以目前的情况来看,实际上最好是利用依赖注入而不是在控制器类中的任何地方构造DbContext