es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo implementar el enfoque de código primero sin agregar ninguna referencia al proyecto web.

He agregado mi dbContext en una biblioteca de clases separada y he añadido la referencia de este proyecto al proyecto WebAPI. Ahora quiero crear migraciones. Pero para crearlas necesito añadir algunas referencias de Entity Framework también al proyecto webapi. Esto violará el principio SOP de mi arquitectura.

Entonces, ¿cómo puedo implementar el enfoque de código primero donde mi API web no dependa de la capa de base de datos?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Hay varias formas de implementar el enfoque de código primero sin violar el principio de Separación de Responsabilidades (SoC) de la arquitectura. Una solución posible es crear un proyecto separado para DbContext y migraciones.

    Para hacer esto, siga estos pasos:

    1. Cree un nuevo proyecto de Biblioteca de Clases en su solución y nómbrelo como “DataAccess” o “DbContext”.
    2. Mueva su clase DbContext a este proyecto.
    3. Instale los paquetes necesarios de Entity Framework (por ejemplo, Microsoft.EntityFrameworkCore.Design, Microsoft.EntityFrameworkCore.SqlServer) en el proyecto DataAccess utilizando NuGet.
    4. Cree una nueva carpeta dentro del proyecto DataAccess llamada “Migrations”.
    5. Abra la Consola del Administrador de Paquetes, seleccione el proyecto DataAccess como proyecto predeterminado y ejecute el siguiente comando para agregar una nueva migración:
    Add-Migration InitialCreate -OutputDir Migrations -Context MyDbContext
    

    Esto creará un nuevo archivo de migración en la carpeta Migrations y el parámetro -Context especifica el nombre de su clase DbContext.

    1. Compile el proyecto DataAccess y asegúrese de que no haya errores.
    2. Agregue una referencia al proyecto DataAccess en su proyecto WebAPI.
    3. En su proyecto WebAPI, abra el archivo Startup.cs y agregue el siguiente código al método ConfigureServices para registrar el DbContext:
    services.AddDbContext<mydbcontext>(options =>
        options.UseSqlServer(Configuration.GetConnectionString("MyConnectionString")));
    
    1. En el mismo archivo, debajo del método Configure, agregue el siguiente código para ejecutar las migraciones de la base de datos al iniciar:
    using (var scope = app.ApplicationServices.GetService<iservicescopefactory>().CreateScope())
    {
        var dbContext = scope.ServiceProvider.GetRequiredService<mydbcontext>();
        dbContext.Database.Migrate();
    }
    
    1. Ejecute su proyecto WebAPI y verifique que la base de datos se haya creado y migrado correctamente.

    Siguiendo este enfoque, puede mantener su proyecto WebAPI libre de dependencias directas en la capa de base de datos, al mismo tiempo que le permite utilizar el enfoque de código primero y realizar migraciones de base de datos.

Comments are closed.