Cómo inyectar la dependencia de ApplicationDbContext en el repositorio MVC6

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

Pregunta

Estoy usando Asp.Net MVC 6 beta4 con patrón de repositorio.

En el My Startup.cs tengo algo como esto:

services.AddEntityFramework()
                .AddSqlServer()
                .AddDbContext<ApplicationDbContext>(options => 
                        options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]));

//Dependency Injection
services.AddTransient<IProductRepository, ProductRepository>();

En el My Controller puedo obtener mi instancia de ApplicationDbContext con:

services.AddEntityFramework()
                .AddSqlServer()
                .AddDbContext<ApplicationDbContext>(options => 
                        options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]));

//Dependency Injection
services.AddTransient<IProductRepository, ProductRepository>();

Pero no puedo obtener la instancia de ApplicationDbContext en la implementación de mi Repositorio con este código de segmento automático anterior.

Con MVC 5 usé ServiceLocator en mi Repositorio y tomé ApplicaionDbContext para:

services.AddEntityFramework()
                .AddSqlServer()
                .AddDbContext<ApplicationDbContext>(options => 
                        options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]));

//Dependency Injection
services.AddTransient<IProductRepository, ProductRepository>();

¿Cómo obtener la instancia de ApplicationDbContext en mi repositorio con Asp.NET MVC 6?

Respuesta aceptada

Lo que probablemente desee es usar AddScoped, y no AddTransient, para que el contexto se limpie correctamente cuando finalice la solicitud.

También debe agregar el Contexto, no solo las llamadas AddEntityFramework ...

services.AddScoped<IProductRepository, ProductRepository>();
services.AddScoped<ApplicationDbContext, ApplicationDbContext>();



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é