我对更好的做法感到困惑。此应用程序使用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
语句的选项,因此我想将其放入构造函数中。以第一方式进行操作会引起问题吗?
答案 0 :(得分:1)
就像这里还有其他事情一样,在您的代码库中,您需要为每个DbContext
创建一个HttpRequest
的实例。在ASP.NET MVC中,在构造控制器类实例时未分配HttpContext
,因此为什么需要在控制器动作方法中创建实例。
以上所有内容都无法从您发布的代码中得到证明,以目前的情况来看,实际上最好是利用依赖注入而不是在控制器类中的任何地方构造DbContext
。