
Comprendre les migrations EF Core
Les migrations permettent de synchroniser le schéma de la base de données et le modèle EF Core, tout en faisant évoluer les données existantes.
Leurs commandes s’exécutent dans la console du gestionnaire de packages NuGet de Visual Studio, appelée PMC, ou dans l’interface en ligne de commande dotnet CLI.
Avec Entity Framework Core, deux commandes servent à préparer puis appliquer les changements : dotnet ef migrations add et dotnet ef database update.
Le tableau suivant présente les commandes correspondantes selon l’environnement :
| Console NuGet dans Visual Studio | Terminal de Visual Studio Code |
|---|---|
Add-Migration | dotnet ef migrations Add |
Database-Update | dotnet ef database update |
Créer une migration
Notre projet possède déjà les deux éléments nécessaires : le modèle Book et le contexte AppDbContext, définis ci-dessous :
public class Book
{
[Key]
public int Id { get; set; }
public string Name { get; set; } = string.Empty;
public string? Description { get; set; }
}
public class AppDbContext : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder options)
{
options.UseSqlServer(@"Server=.\SQLEXPRESS; Database=EFCoreDb;Trusted_Connection=True;Encrypt=False;");
}
public DbSet<Book>? Books { get; set; }
}Dans le terminal de Visual Studio Code, exécutons la commande de création de la migration initDatabaseScript :
dotnet ef migrations add initDatabaseScriptVoici le script généré :
public partial class InitDatabaseScript : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Books",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
Name = table.Column<string>(type: "nvarchar(max)", nullable: false),
Description = table.Column<string>(type: "nvarchar(max)", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Books", x => x.Id);
});
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "Books");
}
}Mettre à jour la base de données
Pour appliquer le script à la base EFCoreDb, exécutons :
dotnet ef database updateLa base EFCoreDb est créée dans SQL Server. La table Books est également créée selon les caractéristiques définies dans la classe Book.
Les captures suivantes montrent les tables obtenues dans la base EFCoreDb :



Vidéo de la formation
Ancien aperçu vidéo
Ouvrir la démonstration initialeRessources complémentaires
Continuer à pratiquer
Apprendre avec un projet complet.
Retrouvez les formations et le code source qui accompagnent les tutoriels.
Découvrir les formations ↗