Ejercicio: Uso del proveedor de bases de datos SQLite con EF Core

Completado

Hasta este punto, usted ha estado guardando sus datos en una base de datos en memoria. Esta base de datos es fácil de configurar y usar mientras desarrolla la aplicación, pero los datos no son persistentes. Como resultado, los datos se perderán cuando se reinicie la aplicación. Antes de implementar la aplicación, debe conservar los datos en una base de datos.

En este ejercicio, actualizará la aplicación para que use una base de datos relacional para almacenar los datos. Usará SQLite para almacenar los datos.

Configuración de la base de datos de SQLite

Complete las secciones siguientes para configurar la base de datos de SQLite.

Instalación de las siguientes herramientas y paquetes

En el terminal, instale los siguientes paquetes:

  1. Proveedor de bases de datos de SQLite EF Core: puede acceder a muchas bases de datos diferentes a través de bibliotecas de complementos denominadas proveedores de bases de datos. El siguiente paquete es el proveedor de bases de datos SQLite para Entity Framework (EF) Core.

    dotnet add package Microsoft.EntityFrameworkCore.Sqlite --version 8.0
    
  2. Herramientas de EF Core: Las herramientas de EF Core realizan tareas de desarrollo en tiempo de diseño. Por ejemplo, crean migraciones, aplican migraciones y generan código para un modelo basado en una base de datos existente.

    dotnet tool install --global dotnet-ef
    
  3. Microsoft.EntityFrameworkCore.Design: contiene toda la lógica en tiempo de diseño de EF Core para crear la base de datos.

    dotnet add package Microsoft.EntityFrameworkCore.Design --version 8.0
    

Habilitación de la creación de bases de datos

Para habilitar la creación de la base de datos, debe establecer la cadena de conexión de la base de datos. A continuación, migrará el modelo de datos a una base de datos de SQLite.

  1. En Program.cs, en var builder = WebApplication.CreateBuilder(args);, agregue una cadena de conexión.

    var connectionString = builder.Configuration.GetConnectionString("Pizzas") ?? "Data Source=Pizzas.db";
    

    Este código comprueba el proveedor de configuración de una cadena de conexión denominada Pizzas. Si no encuentra una, se usará Data Source=Pizzas.db como cadena de conexión. SQLite asignará esta cadena a un archivo.

  2. En la parte CRUD de este tutorial, ha usado una base de datos de memoria. Ahora va a reemplazar la base de datos en memoria por una base de datos persistente.

    Reemplace la implementación actual de la base de datos en memoria en sus servicios de compilación por la versión de SQLite proporcionada aquí:

    builder.Services.AddSqlite<PizzaDb>(connectionString);
    
  3. Con la herramienta de migración de EF Core, ahora puede generar la primera migración, InitialCreate. Guarde todos los cambios y, a continuación, ejecute el siguiente comando:

    dotnet ef migrations add InitialCreate
    

    EF Core crea una carpeta Migrations en el directorio del proyecto que contiene dos archivos con el código que representa las migraciones de base de datos.

  4. Ahora que ha completado la migración, puede usarla para crear la base de datos y el esquema.

    En una ventana de terminal, ejecute el siguiente database update comando para aplicar migraciones a una base de datos:

    dotnet ef database update
    

    Debería ver un archivo Pizzas.db recién creado en el directorio del proyecto.

Ejecución y prueba de la aplicación

Ahora que tiene una base de datos de respaldo, los cambios se conservarán.

Prueba tu aplicación como antes, utilizando dotnet run y la UI de Swagger. Detenga la aplicación mediante el comando Ctrl+C . A continuación, vuelva a ejecutarlo y compruebe que los cambios se conservan en Pizzas.db.

¡Felicidades! Ha conectado una base de datos a la API mínima.