Peut-être que je manque quelque chose de très évident. Mais je n'ai pas été capable de trouver un moyen d'ajouter une nouvelle colonne à une table/modèle existant(e) dans EF Core.
Voici la documentation que je suis en train de suivre : https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/powershell
Et voici ce que j'ai fait jusqu'à présent :
- Créé une migration en utilisant cette commande : "Add-Migration -Name CodingSoldierDbContextMigration -OutputDir Migrations -Context CodingSoldierDbContext"
- Mis à jour la base de données en utilisant la commande : "Update-Database -Migration CodingSoldierDbContextMigration -Context CodingSoldierDbContext". Les tables ont été créées dans la base de données.
- Maintenant, j'ai besoin d'ajouter une nouvelle colonne à une table existante. J'ajoute cette colonne au modèle dans le fichier .cs. Et je supprime la migration existante : "Remove-Migration -Force -Context CodingSoldierDbContext"
- Maintenant je ré-exécute les commandes des étapes 1 et 2. Add-Migration fonctionne et la migration est créée. Mais Update-Database échoue avec l'erreur : "Il existe déjà un objet nommé 'AspNetRoles' dans la base de données." ce qui signifie que la table est déjà présente dans la base de données, ce qui est logique.
Alors comment mettre à jour une table déjà existante ? Je pense à 2 façons :
- Supprimer la base de données. Créer une migration et mettre à jour la base de données. Mais toutes les données seront perdues.
- Ajouter une colonne dans le modèle. Mettre à jour manuellement la table en utilisant un script SQL pour ajouter la nouvelle colonne.
Mais je pense qu'il devrait y avoir une meilleure façon de faire cela.