Ćwiczenie — używanie dostawcy bazy danych SQLite z programem EF Core

Ukończone

Do tego momentu zapisywałeś swoje dane w bazie danych w pamięci. Ta baza danych jest łatwa do skonfigurowania i użycia podczas tworzenia aplikacji, ale dane nie są trwałe. W związku z tym dane zostaną utracone po ponownym uruchomieniu aplikacji. Przed wdrożeniem aplikacji należy utrwałyć dane w bazie danych.

W tym ćwiczeniu uaktualnisz aplikację, aby używać relacyjnej bazy danych do przechowywania danych. Użyjesz sqlite do przechowywania danych.

Konfigurowanie bazy danych SQLite

Wykonaj poniższe sekcje, aby skonfigurować bazę danych SQLite.

Zainstaluj następujące narzędzia i pakiety

W terminalu zainstaluj następujące pakiety:

  1. SqLite EF Core Database Provider: może uzyskiwać dostęp do wielu różnych baz danych za pośrednictwem bibliotek wtyczek nazywanych dostawcami baz danych. Poniższy pakiet to dostawca bazy danych SQLite dla platformy Entity Framework (EF) Core.

    dotnet add package Microsoft.EntityFrameworkCore.Sqlite --version 8.0
    
  2. Narzędzia EF Core: Narzędzia do EF Core wykonują zadania związane z projektowaniem. Na przykład tworzą migracje, stosują migracje i generują kod dla modelu na podstawie istniejącej bazy danych.

    dotnet tool install --global dotnet-ef
    
  3. Microsoft.EntityFrameworkCore.Design: zawiera całą logikę czasu projektowania dla platformy EF Core w celu utworzenia bazy danych.

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

Włączanie tworzenia bazy danych

Aby włączyć tworzenie bazy danych, należy ustawić parametry połączenia bazy danych. Następnie zmigrujesz model danych do bazy danych SQLite.

  1. W Program.cs, w obszarze var builder = WebApplication.CreateBuilder(args);, dodaj łańcuch połączenia.

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

    Ten kod weryfikuje dostawcę konfiguracji pod kątem ciągu połączenia o nazwie Pizzas. Jeśli go nie znajdzie, użyje Data Source=Pizzas.db jako parametrów połączenia. SqLite zamapuje ten ciąg na plik.

  2. W części CRUD tego samouczka użyto bazy danych w pamięci. Teraz zastąpisz tymczasową bazę danych trwałą bazą danych.

    Zastąp bieżącą implementację bazy danych w pamięci builder.Services.AddDbContext<PizzaDb>(options => options.UseInMemoryDatabase("items")); w usługach budowania na SQLite dostępne tutaj:

    builder.Services.AddSqlite<PizzaDb>(connectionString);
    
  3. Za pomocą narzędzia migracji platformy EF Core możesz teraz wygenerować pierwszą migrację, InitialCreate. Zapisz wszystkie zmiany, a następnie uruchom następujące polecenie:

    dotnet ef migrations add InitialCreate
    

    Program EF Core tworzy folder Migrations w katalogu projektu zawierający dwa pliki z kodem reprezentującym migracje bazy danych.

  4. Po zakończeniu migracji możesz użyć jej do utworzenia bazy danych i schematu.

    W oknie terminalu uruchom następujące polecenie database update, aby zastosować migracje do bazy danych:

    dotnet ef database update
    

    W katalogu projektu powinien zostać wyświetlony nowo utworzony plik Pizzas.db .

Uruchamianie i testowanie aplikacji

Teraz, gdy masz bazę danych kopii zapasowej, zmiany zostaną utrwalone.

Przetestuj aplikację jak wcześniej, używając dotnet run oraz interfejsu Swagger UI. Zatrzymaj aplikację za pomocą polecenia Ctrl+C . Następnie uruchom ponownie i sprawdź, czy zmiany są nadal zapisane w Pizzas.db.

Gratulacje! Podłączyłeś bazę danych do swojego minimalnego interfejsu API!