5-10 Migration Événements
La base de données ne contient qu'une table villes, c'est peu pratique!
Pour rendre le site Web un minimum utile, il faudra des événements à afficher.
Rappel du DEA
Rappelons-nous de cette section du DEA...

Créer la migration
-
Sous le dossier
Migrationsdans le projetSnowfall.Data, créez une nouvelle classe pour la migration N'oubliez pas de nommer le fichier et la version selon la convention YYYYMMDDHHMM.Snowfall.Data/Migrations/202302041311_CreerEvenements.csusing FluentMigrator;
namespace Snowfall.Data.Migrations;
[Migration(202302041311)]
public class CreerEvenements : Migration
{
public override void Up()
{
// Up
}
public override void Down()
{
// Down
}
} -
Colonnes
nometid. Les colonnes nom et id ressemblent beaucoup à ce que nous avons fait pour les villes:public override void Up()
{
Create.Table("evenements")
.WithColumn("id").AsInt64().PrimaryKey().Identity()
.WithColumn("nom").AsString();
} -
Colonnes
descriptionetimage_path. À partir du DEA, on voit quedescriptionetimage_pathsont des colonnestextnullable. Comment représenter cela via la migration? Il ne suffit que d'ajouter la fonctionNullable().public override void Up()
{
Create.Table("evenements")
.WithColumn("id").AsInt64().PrimaryKey().Identity()
.WithColumn("nom").AsString()
.WithColumn("description").AsString().Nullable()
.WithColumn("image_path").AsString().Nullable();
} -
Colonne
date. La colonnedateest de typeDateTime, outimestampenPostgreSQL.public override void Up()
{
Create.Table("evenements")
.WithColumn("id").AsInt64().PrimaryKey().Identity()
.WithColumn("nom").AsString()
.WithColumn("description").AsString().Nullable()
.WithColumn("image_path").AsString().Nullable()
.WithColumn("date").AsDateTime();
} -
Colonne
capacite.. Finalement, la colonnecapaciteest uninteger, soit unintde 32 bits pour PostgreSQL.public override void Up()
{
Create.Table("evenements")
.WithColumn("id").AsInt64().PrimaryKey().Identity()
.WithColumn("nom").AsString()
.WithColumn("description").AsString().Nullable()
.WithColumn("image_path").AsString().Nullable()
.WithColumn("date").AsDateTime()
.WithColumn("prix").AsDecimal(10, 2)
.WithColumn("capacite").AsInt32();
} -
Fonction Down(). Finalement, implémentons la fonction
Down()qui sera très simple.public override void Down()
{
Delete.Table("evenements");
}
Lancer le projet
Lancez l'application et la nouvelle migration devrait s'exécuter. Dans la console Debug, devrait apparaître ceci:
CREATE TABLE "public"."evenements" ("id" bigserial NOT NULL, "nom" text NOT NULL, "description" text, "image_path" text, "date" timestamp NOT NULL, "prix" decimal(10,2) NOT NULL, "capacite" integer NOT NULL, CONSTRAINT "PK_evenements" PRIMARY KEY ("id"));
Remarquez "description" text, "image_path" text qui ne font pas mention de NOT NULL, date qui obtient le type timestamp (DateTime en Postgres) et capacite qui est simplement un integer, soit un Int32.
Comme FluentMigrator peut supporter différents systèmes de base de données, une conversion est faite automatiquement entre les types offerts par FluentMigrator (ex.: DateTime ou Int32) et les types équivalents dans le système de gestion de bd utilisé (ex.: timestamp ou integer)