EF Core: migrări (dotnet ef migrations) în C# (.NET)

Migrările țin schema bazei de date în pas cu modelul C#: migrations add generează codul schimbării, database update o aplică.

Sintaxă C#
dotnet ef migrations add NumeMigrare   dotnet ef database update   dotnet ef migrations remove

Ce face EF Core: migrări (dotnet ef migrations)

Când adaugi o clasă sau o proprietate în model, baza de date trebuie actualizată. dotnet ef migrations add Nume compară modelul actual cu instantaneul salvat la migrarea anterioară și generează în dosarul Migrations o clasă cu metodele Up (aplică schimbarea) și Down (o anulează), plus fișierul <Context>ModelSnapshot.cs. Fișierele se păstrează în controlul versiunilor.

dotnet ef database update aplică migrările care lipsesc și le notează în tabelul __EFMigrationsHistory; cu un nume de migrare, aduce baza exact la acel punct (și înapoi). migrations remove șterge ultima migrare dacă nu a fost aplicată, iar migrations script generează SQL-ul pentru a fi verificat și rulat de un administrator.

Uneltele se instalează o dată cu dotnet tool install --global dotnet-ef, iar proiectul are nevoie de pachetul Microsoft.EntityFrameworkCore.Design. Pentru producție, documentația EF recomandă scripturi SQL sau migration bundles (dotnet ef migrations bundle), nu database update rulat de pe calculatorul dezvoltatorului.

Parametri

Parametru Descriere
migrations add &lt;nume&gt; Creează o migrare nouă. Folosește nume descriptive: AdaugaStocProdus.
database update [&lt;migrare&gt;] Aplică migrările; cu nume, merge la acea migrare (inclusiv înapoi).
migrations list Afișează migrările și pe cele neaplicate ((Pending)).
migrations script [de la] [până la] Generează SQL. Cu --idempotent scriptul verifică ce e deja aplicat.
migrations remove Șterge ultima migrare neaplicată.

Exemple

Exemplul 1: Prima migrare și crearea bazei

dotnet tool install --global dotnet-ef
dotnet package add Microsoft.EntityFrameworkCore.Design
dotnet ef migrations add InitialCreate
dotnet ef database update

Ieșire în terminal (exemplu)

You can invoke the tool using the following command: dotnet-ef
Tool 'dotnet-ef' (version '10.0.0') was successfully installed.
...
Build started...
Build succeeded.
Done. To undo this action, use 'ef migrations remove'
Build started...
Build succeeded.
Applying migration '20261025093000_InitialCreate'.
Done.

Exemplul 2: O coloană nouă: codul generat de migrare

După ce adaugi public int Stoc { get; set; } în clasa Produs și rulezi dotnet ef migrations add AdaugaStoc, EF generează o clasă asemănătoare (pentru SQLite).

public partial class AdaugaStoc : Migration
{
    protected override void Up(MigrationBuilder migrationBuilder)
    {
        migrationBuilder.AddColumn<int>(
            name: "Stoc",
            table: "Produse",
            type: "INTEGER",
            nullable: false,
            defaultValue: 0);
    }

    protected override void Down(MigrationBuilder migrationBuilder)
    {
        migrationBuilder.DropColumn(
            name: "Stoc",
            table: "Produse");
    }
}

Greșeli frecvente

  • Modificarea manuală a unei migrări deja aplicate în altă bază de date: istoricul nu se mai potrivește. Creează o migrare nouă.
  • Ștergerea fișierului ModelSnapshot: următoarea migrare va încerca să creeze din nou toate tabelele.
  • Redenumirea unei proprietăți poate fi văzută ca ștergere plus adăugare de coloană, cu pierdere de date. Verifică metoda Up și înlocuiește cu RenameColumn dacă e cazul.

Comenzi înrudite

Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: EF Core: migrări (dotnet ef migrations)

Ai o nelămurire despre utilizarea comenzii EF Core: migrări (dotnet ef migrations) sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.