¿Iniciando un DbContext en un BaseController para MVC6 y EF7?

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

Pregunta

Siguiendo el documento de Primeros pasos de ASP.Net 5 , veo que debido a la dependency injection de dependency injection en la parte superior de cualquier controlador que accederá a la base de datos, necesito poner algo como

private DbContext _Context;

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

para inyectar el DbContext en el controlador para su uso. En mi aplicación web ASP.Net 5 MVC 6, cada página interactuará con la base de datos, así que pensé que crearía un BaseController que BaseController el reinicio de mis controladores y pondría el código de inyección allí. He hecho esto, pero todos los controladores que heredan del BaseController me dan el error

No hay ningún argumento dado que corresponda al parámetro formal requerido 'Contexto' de 'BaseController.BaseController (DbContext)

Soy nuevo en DI y no estoy seguro si estoy haciendo las cosas bien o incluso si se puede hacer de la manera que quiero. ¿Es posible hacerlo de esta manera o tengo que poner ese código en cada controlador que hago, y si tengo que hacerlo, cómo puedo escribir una acción en el BaseController que interactúa con la base de datos?

Respuesta aceptada

Si su controlador base tiene un constructor que toma DbContext, cualquier controlador que lo herede también debe usar el mismo constructor como éste para que pueda pasar la dependencia a la clase base:

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

}



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué