none
WebApi debe tener referencia a Data? RRS feed

  • Pregunta

  • Buenas,

    Tengo la siguiente estructura en mi aplicación Net Core 3.1

    En Domain.Core.Entities se encuentran las clases para las Entidades.

    En Infraestructure.Data.MainModule se encuentra el Contexto de Datos, aquí he instalado los paquetes:

    - Microsoft.EntityFrameworkCore.Sqlserver

    - Microsoft.EntityFrameworkCore.Tools

    La cadena de conexión se encuentra en la capa de Servicios (WebApi). Estoy tratando de crear la primera migración pero me dice que debo agregar en WebApi una referencia hacia la capa de Datos.

    ¿Debo agregar la referencia a Datos? En algún lugar recuerdo haber leído que la capa Web no debería contener referencia a Datos sino utilizar repositorios (interfaces)  que se implementan finalmente en la capa de Datos.

    martes, 25 de febrero de 2020 2:22

Respuestas

  • Hola, deberías tener una referencia a tu contexto para poder agregarlo en el motor de Inyección de dependencias. Estás aplicando en tu método ConfigureServices un AddDbContext()??

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<MyDbContext>(options =>
            options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
        services.AddControllers(); 
    }


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    • Marcado como respuesta eduar2083 jueves, 27 de febrero de 2020 14:39
    martes, 25 de febrero de 2020 10:54
    Moderador

Todas las respuestas

  • Hola, deberías tener una referencia a tu contexto para poder agregarlo en el motor de Inyección de dependencias. Estás aplicando en tu método ConfigureServices un AddDbContext()??

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<MyDbContext>(options =>
            options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
        services.AddControllers(); 
    }


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    • Marcado como respuesta eduar2083 jueves, 27 de febrero de 2020 14:39
    martes, 25 de febrero de 2020 10:54
    Moderador
  • Muchas gracias, Sergio efectivamente había olvidado registrar el DbContext.

    Sin embargo, me he resistido en agregar la referencia Data a la capa WebApi. Hice que la capa Infraestructure.CrossCutting.IoC haga referencia a Data (con la instalación de los paquetes necesarios) y en esta capa IoC registro la inyección de dependencias:

    En WebApi hago referencia a IoC para hacer la llamada desde Startup al método estático creado en la capa IoC:

    public void ConfigureServices(IServiceCollection services)
    {
    	BootStrapper.RegisterServices(services, Configuration);
    }

    Con esto ya pude crear y ejecutar las migraciones.

    No estoy seguro si está bien desde el punto de vista de arquitectura.




    • Editado eduar2083 jueves, 27 de febrero de 2020 2:14
    jueves, 27 de febrero de 2020 2:12
  • Hola. Pues está perfecto. Gracias por tu aporte

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    jueves, 27 de febrero de 2020 5:49
    Moderador