Saltar al contenido

Inyección ASP.NET Core DbContext

Recuerda que en las ciencias un error suele tener diversas soluciones, pero nosotros te mostraremos lo más óptimo y mejor.

Solución:

AddDbContext la implementación solo registra el contexto en sí y sus dependencias comunes en DI. En vez de AddDbContext llamada, es perfectamente legal registrar manualmente su DbContext:

services.AddTransient();

Además, podría usar un método de fábrica para pasar parámetros (esto es responder a la pregunta):

services.AddTransient(provider =>

    //resolve another classes from DI
    var anyOtherClass = provider.GetService();

    //pass any parameters
    return new FooContext(foo, bar);
);

PD, en general, no tienes que registrarte DbContextOptionsFactory y por defecto DbContextOptions para resolver DbContext por sí mismo, pero podría ser necesario en casos específicos.

Puede usar esto en startup.cs.

Información detallada: https://docs.microsoft.com/en-us/ef/core/miscellaneous/configuring-dbcontext

Ejemplo detallado: Introducción a ASP.NET Core MVC y Entity Framework Core

public void ConfigureServices(IServiceCollection services)

    // Add framework services.
    services.AddDbContext(options =>options.
       UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

Para registrarse DbContext como un servicio en IServiceCollection tiene dos opciones: (suponemos que se va a conectar a una base de datos de SQL Server)

Usando AddDbContext<>

services.AddDbContext(o=>o.UseSqlServer(Your Connection String));

Uso de AddDbContextPool<>

services.AddDbContextPool(o=>o.UseSqlServer(Your Connection String));

como puede ver, estos dos tienen similitudes en términos de escritura, pero de hecho tienen algunas diferencias fundamentales en términos de conceptos. @GabrielLuci tiene una buena respuesta sobre las diferencias entre estos dos: https://stackoverflow.com/a/48444206/1666800

También tenga en cuenta que puede almacenar su conexión string dentro del archivo appsettings.json y simplemente léalo usando: Configuration.GetConnectionString("DefaultConnection") dentro de ConfigureServices método en Startup.cs expediente.

Recuerda que puedes recomendar este tutorial si te fue de ayuda.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *