Oefening: de SQLite-databaseprovider gebruiken met EF Core
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:
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
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
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.
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.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);
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.
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.