在ASP.Net 5 Getting Started文档之后,我看到由于dependency injection
位于将访问数据库的任何控制器的顶部,我需要输入类似
private DbContext _Context;
public HomeController(DbContext Context)
{
_Context = Context;
}
将DbContext注入控制器以供使用。在我的ASP.Net 5 MVC 6 Web App中,每个页面都将与数据库进行交互,所以我想我会创建一个BaseController
,我的控制器的重置将继承并将注入代码放在那里。我已经完成了这个,但是从BaseController
继承的每个控制器都给了我错误
没有给出的参数对应于'BaseController.BaseController(DbContext)所需的形式参数'Context'
我是DI的新手,不确定我是在做正确的事,还是可以按照我想要的方式完成。是否可以这样做,或者我必须将代码放在我制作的每个控制器上,如果我必须这样做,我怎样才能在与{DB}交互的BaseController
中编写一个动作? / p>
答案 0 :(得分:5)
如果您的基本控制器有一个带DbContext的构造函数,那么任何继承它的控制器也必须使用相同的构造函数,这样它就可以将依赖项传递给基类:
public HomeController(DbContext Context):base(Context)
{
}