Aller au contenu
codeandprodDES PROJETS COMPLETS · PAS À PAS

Entity Framework Core

Créer et appliquer les migrations EF Core

EL JIHAOUITutoriel pratique
Créer et appliquer les migrations EF Core

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 StudioTerminal de Visual Studio Code
Add-Migrationdotnet ef migrations Add
Database-Updatedotnet 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 initDatabaseScript

Voici 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 update

La 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 :

database-efcoredb
database-efcoredb-table-books
database-efcoredb-migrations

Vidéo de la formation

Ancien aperçu vidéoOuvrir la démonstration initiale

Ressources complémentaires

Continuer à pratiquer

Apprendre avec un projet complet.

Retrouvez les formations et le code source qui accompagnent les tutoriels.

Découvrir les formations ↗