Migrationer i Entity Framework Core

Yay! Migrationer låter oss uppdatera databasens struktur utan att manuellt skriva SQL-skript. Vi beskriver förändringen i kod och låter EF Core generera SQL åt oss – smidigt både lokalt och i produktion.

TL;DR

Använd dotnet ef migrations add <namn> för att skapa en migration och dotnet ef database update för att applicera den. Lägg migrationsfilerna i versionshantering så att teamet delar samma schema.

Komma igång

  1. Säkerställ att paketet Microsoft.EntityFrameworkCore.Tools finns.
  2. Kontrollera att DbContext går att instansiera (DI eller parameterlös konstruktor).
  3. Kör dotnet ef migrations add InitialCreate från projektets katalog.
dotnet ef migrations add InitialCreate
dotnet ef database update
  • Migrations/-mappen får två filer: själva migrationen och en snapshot.
  • Snapshot-filen beskriver nuläget och används när nästa migration genereras.

Namnge smart

  • Beskriv förändringen: AddEnrollment, RenameCourseTitle, SeedStatusValues.
  • Håll dig till PascalCase utan mellanslag.
  • Har du ångrat dig? Kör dotnet ef migrations remove direkt.

Uppdatera databasen

dotnet ef database update
  • Uppdaterar standarddatabasen (definierad i konfigurationen).
  • Specifika miljöer? Lägg till --connection med en annan sträng.

Rulla tillbaka

dotnet ef database update PreviousMigrationName
  • Perfekt om en migration beter sig konstigt i test.
  • Sista utvägen: dotnet ef database update 0 skapar om databasen från scratch.

Migrations i team

  • Checka in migrationsfilerna i Git.
  • Kör dotnet ef database update direkt efter pull så att databasen matchar koden.
  • Konflikt? Ta bort migrationerna lokalt, kör om genereringen, pusha igen.

Tips för produktion

  • Kör dotnet ef migrations bundle för att skapa ett fristående verktyg.
  • Alternativt generera SQL: dotnet ef migrations script.
  • Kör alltid i staging före produktion.

Obligatorisk Dad-joke

Varför älskar databasen migrationer?

För att den gillar att “flytta” till bättre former!


Upp

Upp


Licens: Apache 2.0 | © 2023 Marcus Medina, Campus Mölndal. Alla rättigheter förbehållna.
Du får använda och modifiera detta verk enligt villkoren i Apache License, Version 2.0. Du får inte använda detta verk för kommersiella ändamål utan tillstånd från upphovsmannen.