Aller au contenu principal

5-7 Définir la migration

Vous devriez avoir ceci comme code de migration:

Snowfall.Data/Migrations/202301311649_CreerVilles.cs
using FluentMigrator;

namespace Snowfall.Data.Migrations;

[Migration(202301311649)]
public class CreerVilles : Migration
{
public override void Up()
{
throw new NotImplementedException();
}

public override void Down()
{
throw new NotImplementedException();
}
}

Implémentation de Up()

La fonction Up() définit ce qui se produit lorsqu'une migration est exécutée. Elle fait évoluer la base de données vers un ajout: une table, une colonne, une contrainte, etc.

  1. Créer une table. Pour créer une table, on utilise Create.Table

    public override void Up()
    {
    Create.Table("villes");
    }
  2. Créer une colonne id. Pour créer une colonne, on utilise WithColumn().

    public override void Up()
    {
    Create.Table("villes")
    .WithColumn("id");
    }
  3. Définir le type Bigint. Comme type pour la colonne id, un int de 64 bits sera utilisé.

    FluentMigrator permet de préciser le type de données de la colonne via AsTypeDeDonnes. Par exemple, pour Int64 (Bigint):

    Create.Table("villes")
    .WithColumn("id").AsInt64();

    Vous pouvez utiliser l'autocomplétion pour voir les différents types disponibles.

    Imgur

  4. Définir comme clé primaire. La colonne id sera la clé primaire de la table. On peut le définir via la fonction PrimaryKey().

    Create.Table("villes")
    .WithColumn("id").AsInt64().PrimaryKey();
  5. Définir comme clé "identity". La colonne sera entièrement gérée par le système de base de données, c'est-à-dire que Postgres incrémentera automatiquement l'identifiant. On utilise Identity() pour ce faire.

    Create.Table("villes")
    .WithColumn("id").AsInt64().PrimaryKey().Identity();
  6. Créer les colonnes nom et pays_iso. Selon le même principe:

    public override void Up()
    {
    Create.Table("villes")
    .WithColumn("id").AsInt64().PrimaryKey().Identity()
    .WithColumn("nom").AsString(255)
    .WithColumn("pays_iso").AsString(2);
    }

    Le paramètre 2 passé à la fonction AsString(2) pour la colonne pays_iso représente la longueur, soit 2 caractères dans ce cas.