在 MVC6 和 EF7 的 BaseController 中初始化 DbContext?
Initizlizing a DbContext in a BaseController for MVC6 and EF7?
根据 ASP.Net 5 Getting Started 文档,我看到由于 dependency injection
在任何将访问数据库的控制器的顶部,我需要放置类似
的内容
private DbContext _Context;
public HomeController(DbContext Context)
{
_Context = Context;
}
将DbContext注入controller使用。在我的 ASP.Net 5 MVC 6 Web 应用程序中,每个页面都将与数据库交互,所以我想我会创建一个 BaseController
,我的控制器的重置将从中继承并将注入代码放在那里。我已经这样做了,但是从 BaseController
继承的每个控制器都给我错误
There is no argument given that corresponds to the required formal parameter 'Context' of 'BaseController.BaseController(DbContext)
我是 DI 的新手,不确定我做的事情是否正确,甚至不确定是否可以按照我想要的方式完成。是否可以这样做,或者我是否必须将该代码放在我制作的每个控制器上,如果我必须这样做,我如何在 BaseController
中编写一个与数据库交互的动作?
如果您的基础控制器有一个采用 DbContext 的构造函数,那么继承它的任何控制器也必须使用与此相同的构造函数,以便它可以将依赖项传递给基础 class:
public HomeController(DbContext Context):base(Context)
{
}
根据 ASP.Net 5 Getting Started 文档,我看到由于 dependency injection
在任何将访问数据库的控制器的顶部,我需要放置类似
private DbContext _Context;
public HomeController(DbContext Context)
{
_Context = Context;
}
将DbContext注入controller使用。在我的 ASP.Net 5 MVC 6 Web 应用程序中,每个页面都将与数据库交互,所以我想我会创建一个 BaseController
,我的控制器的重置将从中继承并将注入代码放在那里。我已经这样做了,但是从 BaseController
继承的每个控制器都给我错误
There is no argument given that corresponds to the required formal parameter 'Context' of 'BaseController.BaseController(DbContext)
我是 DI 的新手,不确定我做的事情是否正确,甚至不确定是否可以按照我想要的方式完成。是否可以这样做,或者我是否必须将该代码放在我制作的每个控制器上,如果我必须这样做,我如何在 BaseController
中编写一个与数据库交互的动作?
如果您的基础控制器有一个采用 DbContext 的构造函数,那么继承它的任何控制器也必须使用与此相同的构造函数,以便它可以将依赖项传递给基础 class:
public HomeController(DbContext Context):base(Context)
{
}