📄️ Introduction
Afin de permettre l'exploration du rendu serveur et de MVC, les données utilisées étaient simplement des données en mémoire ne provenant pas d'une base de données.
📄️ 5-1 Création et configuration de la BD
Vous devriez avoir PostgreSQL et DataGrip d'installé. Si ce n'est pas le cas, référez-vous à la section préparation de l'environnement de développement pour les instructions d'installation.
📄️ 5-2 DEA
Avant d'entammer la création des tables et des colonnes, il est utile d'avoir une idée de la structure de l'application.
📄️ 5-3 Création du projet Snowfall.Data
Notre solution .NET contient pour le moment un seul projet, soit Snowfall.Web.Mvc. Nous pourrions mettre tout ce qui à trait aux données et aux migrations dans le projet MVC, mais il est préférable de les séparer.
📄️ 5-4 Dossier Migrations
Le projet Snowfall.Data contiendra éventuellement plus que des migrations et des seeders. De ce fait, nous allons créer des dossiers à l'intérieur du projet pour bien catégoriser les différentes classes que nous retrouverons dans le projet.
📄️ 5-5 FluentMigrator et Npgsql via Nuget
Vous savez que FluentMigrator sera utilisé pour gérer et exécuter les migrations de base de données. Mais comment l'ajouter au projet?
📄️ 5-6 Première migration
Nous allons créer une première migration simple, soit celle pour générer la table villes. Comme les événements peuvent se tenir dans plusieurs villes, un lien existe entre la table evenements et villes.
📄️ 5-7 Définir la migration
Vous devriez avoir ceci comme code de migration:
📄️ 5-8 Exécuter les migrations
Il y a quelques façons d'exécuter les migrations. La principale, et méthode recommandée par FluentMigrator, est de les exécuter à même l'application.
📄️ 5-9 Migration Down()
Les migrations sont réversibles. À l'image de la migration Up() qui fait évoluer la base de données, la fonction Down() doit définir l'inverse de Up(), au cas où on veuille revenir en arrière et réinitialiser la BD.
📄️ 🛑 Explications MigrationsConfig
Beaucoup de choses ont été effectuées en lien avec la classe MigrationsConfig et méritent d'être décortiquées.
📄️ 5-10 Migration Événements
La base de données ne contient qu'une table villes, c'est peu pratique!
📄️ 5-11 Oops, colonne ville_id
Oopsy... on a oublié la colonne ville_id dans la migration de la table evenements.