在BaseController中為MVC6和EF7初始化DbContext?

asp.net-core asp.net-core-mvc dependency-injection entity-framework-core

按照ASP.Net 5入門文檔,我看到由於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的新手,不確定我是在做正確的事,還是可以按照我想要的方式完成。是否可以這樣做,或者我必須將代碼放在我製作的每個控制器上,如果我必須這樣做,我怎麼能在BaseController中編寫一個與DB交互的動作?

一般承認的答案

如果您的基本控制器有一個帶DbContext的構造函數,那麼任何繼承它的控制器也必須使用相同的構造函數,這樣它就可以將依賴項傳遞給基類:

public HomeController(DbContext Context):base(Context)
{

}



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因