2

После ASP.Net 5 Getting Started документа я вижу, что из-за dependency injection в верхней части любого контроллера, который будет иметь доступ к базе данных мне нужно поставить что-то вродеИнициализация DbContext в BaseController для MVC6 и EF7?

private DbContext _Context; 

public HomeController(DbContext Context) 
{ 
     _Context = Context; 
} 

впрыснуть DbContext в контроллер для использования. В моем веб-приложении ASP.Net 5 MVC 6 каждая отдельная страница будет взаимодействовать с базой данных, поэтому я решил создать BaseController, что сброс моих контроллеров наследует и помещает там код для инъекций. Я сделал это, но каждый контроллер, который наследует от BaseController дать мне ошибку

Там не аргумент, учитывая, что соответствует требуемому формальному параметру «Контекст» из «BaseController.BaseController (DbContext)

Я новичок в DI и не уверен, что я делаю все правильно или даже если это можно сделать так, как я хочу. Возможно ли это сделать так, или мне нужно поместить этот код на каждый контроллер, который я делаю, и если мне нужно это сделать, как я могу написать действие в BaseController, которое взаимодействует с БД?

ответ

2

Если базовый контроллер имеет конструктор, который принимает DbContext тогда любой контроллер, который наследуется он также должен использовать тот же конструктор, как это так, он может передать зависимость от базового класса:

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

} 
+0

Я добавил свой код и ошибка исчезла, но я делаю '_DbContext' недоступен из' HomeController' – Matthew

+1

, вам нужно объявить как защищенный в базовом контроллере, чтобы homecontroller разрешил его использовать. –

+0

Это исправлено, спасибо! – Matthew

Смежные вопросы