Exercice : Utiliser le fournisseur de base de données SQLite avec EF Core

Effectué

Jusqu’à ce stade, vous avez enregistré vos données dans une base de données en mémoire. Cette base de données est facile à configurer et à utiliser pendant que vous développez votre application, mais les données ne sont pas persistantes. Par conséquent, les données sont perdues lorsque l’application est redémarrée. Avant de déployer votre application, vous devez conserver les données dans une base de données.

Dans cet exercice, vous allez mettre à niveau votre application pour utiliser une base de données relationnelle pour stocker vos données. Vous utiliserez SQLite pour stocker vos données.

Configurer la base de données SQLite

Suivez les sections suivantes pour configurer la base de données SQLite.

Installer les outils et packages suivants

Dans le terminal, installez les packages suivants :

  1. Fournisseur de base de données EF Core SQLite : peut accéder à de nombreuses bases de données différentes via des bibliothèques de plug-in appelées fournisseurs de base de données. Le package suivant est le fournisseur de base de données SQLite pour Entity Framework (EF) Core.

    dotnet add package Microsoft.EntityFrameworkCore.Sqlite --version 8.0
    
  2. Outils EF Core : Les outils pour EF Core effectuent des tâches de développement au moment du design. Par exemple, ils créent des migrations, appliquent des migrations et génèrent du code pour un modèle basé sur une base de données existante.

    dotnet tool install --global dotnet-ef
    
  3. Microsoft.EntityFrameworkCore.Design : contient toute la logique au moment du design pour EF Core pour créer votre base de données.

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

Activer la création de la base de données

Pour activer la création de base de données, vous devez définir la chaîne de connexion de base de données. Vous allez ensuite migrer votre modèle de données vers une base de données SQLite.

  1. Dans Program.cs, sous var builder = WebApplication.CreateBuilder(args);, ajoutez une chaîne de connexion.

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

    Ce code vérifie le fournisseur de configuration pour une chaîne de connexion nommée Pizzas. S'il n'en trouve pas, il utilisera Data Source=Pizzas.db comme chaîne de connexion. SQLite mappe cette chaîne à un fichier.

  2. Dans la partie CRUD de ce didacticiel, vous avez utilisé une base de données en mémoire. Vous allez maintenant remplacer la base de données en mémoire par une base de données persistante.

    Remplacez l’implémentation builder.Services.AddDbContext<PizzaDb>(options => options.UseInMemoryDatabase("items")); actuelle de votre base de données en mémoire dans vos services de build par sqLite ici :

    builder.Services.AddSqlite<PizzaDb>(connectionString);
    
  3. Avec l’outil de migration EF Core, vous pouvez maintenant générer votre première migration. InitialCreate Enregistrez toutes vos modifications, puis exécutez la commande suivante :

    dotnet ef migrations add InitialCreate
    

    EF Core crée un dossier Migrations dans votre répertoire de projet qui contient deux fichiers avec le code qui représente les migrations de base de données.

  4. Maintenant que vous avez terminé la migration, vous pouvez l’utiliser pour créer votre base de données et votre schéma.

    Dans une fenêtre de terminal, exécutez la commande suivante database update pour appliquer des migrations vers une base de données :

    dotnet ef database update
    

    Vous devez voir un fichier Pizzas.db nouvellement créé dans le répertoire de votre projet.

Exécuter et tester l’application

Maintenant que vous disposez d’une base de données de stockage, vos modifications seront conservées.

Testez votre application comme auparavant en utilisant dotnet run ainsi que l’interface utilisateur Swagger. Arrêtez l’application à l’aide de la commande Ctrl+C . Ensuite, réexécutez-la et vérifiez que vos modifications sont toujours conservées dans Pizzas.db.

Félicitations! Vous avez connecté une base de données à votre API minimale !