Oefening: de SQLite-databaseprovider gebruiken met EF Core

Voltooid

Tot nu toe hebt u uw gegevens opgeslagen in een in-memory database. Deze database is eenvoudig in te stellen en te gebruiken tijdens het ontwikkelen van uw toepassing, maar de gegevens zijn niet permanent. Als gevolg hiervan gaan de gegevens verloren wanneer de toepassing opnieuw wordt opgestart. Voordat u uw toepassing implementeert, moet u de gegevens in een database behouden.

In deze oefening voert u een upgrade uit van uw toepassing om een relationele database te gebruiken om uw gegevens op te slaan. U gebruikt SQLite om uw gegevens op te slaan.

De SQLite-database instellen

Voltooi de volgende secties om de SQLite-database in te stellen.

Installeer de volgende hulpprogramma's en pakketten

Installeer in de terminal de volgende pakketten:

  1. SQLite EF Core-databaseprovider: heeft toegang tot veel verschillende databases via invoegtoepassingsbibliotheken, databaseproviders genoemd. Het volgende pakket is de SQLite-databaseprovider voor Entity Framework (EF) Core.

    dotnet add package Microsoft.EntityFrameworkCore.Sqlite --version 8.0
    
  2. EF Core-hulpprogramma's: Hulpprogramma's voor EF Core voeren ontwerp-tijdontwikkelingstaken uit. Ze maken bijvoorbeeld migraties, passen migraties toe en genereren code voor een model op basis van een bestaande database.

    dotnet tool install --global dotnet-ef
    
  3. Microsoft.EntityFrameworkCore.Design: bevat alle ontwerplogica voor EF Core om uw database te maken.

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

Database maken inschakelen

Als u het maken van databases wilt inschakelen, moet u de database-verbindingsreeks instellen. Vervolgens migreert u uw gegevensmodel naar een SQLite-database.

  1. Voeg onder var builder = WebApplication.CreateBuilder(args);Program.cs een verbindingsreeks toe.

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

    Met deze code wordt de configuratieprovider gecontroleerd op een verbindingsreeks met de naam Pizza's. Als deze niet wordt gevonden, wordt deze gebruikt Data Source=Pizzas.db als de verbindingsreeks. SQLite wijst deze tekenreeks toe aan een bestand.

  2. In het CRUD-gedeelte van deze zelfstudie hebt u een in-memory database gebruikt. Nu gaat u de in-memory database vervangen door een permanente database.

    Vervang uw huidige in-memory database-implementatie builder.Services.AddDbContext<PizzaDb>(options => options.UseInMemoryDatabase("items")); in uw buildservices door de SQLite hier:

    builder.Services.AddSqlite<PizzaDb>(connectionString);
    
  3. Met het EF Core-migratiehulpprogramma kunt u nu uw eerste migratie genereren. InitialCreate Sla al uw wijzigingen op en voer vervolgens de volgende opdracht uit:

    dotnet ef migrations add InitialCreate
    

    EF Core maakt een map Migrations in uw projectmap die twee bestanden bevat met de code die de databasemigraties vertegenwoordigt.

  4. Nu u de migratie hebt voltooid, kunt u deze gebruiken om uw database en schema te maken.

    Voer in een terminalvenster de volgende database update opdracht uit om migraties toe te passen op een database:

    dotnet ef database update
    

    U ziet nu een nieuw Pizzas.db-bestand in uw projectmap.

De toepassing uitvoeren en testen

Nu u een back-updatabase hebt, blijven uw wijzigingen behouden.

Test uw toepassing net als voordat u dotnet run de Swagger-gebruikersinterface gebruikt. Stop de toepassing met de opdracht Ctrl+C . Voer deze opnieuw uit en controleer of uw wijzigingen nog steeds worden bewaard in Pizzas.db.

Gefeliciteerd! U hebt een database bekabeld naar uw minimale API.