Rétrogradation (restauration) de la firebase database avec code d’abord dans un environnement de production

J’ai une application Web que j’installe sur les ordinateurs de mes clients pour leur utilisation interne. J’utilise C # MVC5 et Entity Framework code-first. J’ai utilisé la migration automatique = true mais je me suis arrêté et l’ai défini sur false. Je l’ai installé sur un environnement de production (version) – avec un package de déploiement (pas de Visual Studio).

J’ai un client avec l’application – version 1. Maintenant, je souhaite passer à la version 2. Je souhaite activer la mise à niveau de la firebase database de l’application (dans le fichier de production, avec l’installation de CMD à partir d’un package), DB s’il y aura des problèmes – mais sans supprimer les lignes existantes.

Par exemple, si j’ai une table “Items” et que Items a Key, Name, Location . Lors de la mise à niveau, j’ajoute une nouvelle colonne: Email . Lors du déclassement, la nouvelle colonne sera supprimée. J’ai créé la migration sur Visual Studio, je reçois ce code (c’est juste pour l’exemple – j’ai plus de migrations):

 public partial class AddEmail : DbMigration { public override void Up() { AddColumn("dbo.Items", "Email", c => c.Ssortingng()); } public override void Down() { DropColumn("dbo.Items", "Email"); } } 

Maintenant, j’ai installé la nouvelle version de l’application sur la version existante et cela a bien fonctionné – la nouvelle colonne a été ajoutée et a fonctionné avec le nouveau code. J’ai ajouté quelques éléments (lignes).

Maintenant, comment puis-je réinstaller l’ancienne version pour que la nouvelle colonne soit supprimée? En fait, je veux annuler les nouvelles migrations, mais je ne veux pas perdre les nouvelles lignes, mais uniquement les nouvelles colonnes.

Cet article explique comment créer un script migrant d’une migration à l’autre – mise à niveau ou dégradation. Alors j’ai couru dans la console du gestionnaire de paquets –

Update-Database -Script -TargetMigration: MyMigration1

et obtenu le script SQL.

Je devais le corriger un peu, puis je l’exécutais dans la firebase database de production pour rétrograder la firebase database.

Vous pouvez rétrograder à une migration spécifique à l’aide de cette technique: https://msdn.microsoft.com/en-us/data/jj591621.aspx#specific

N’oubliez pas que la migration de la cible nécessite une migration cible. Vous devez donc configurer un instantané de base de votre firebase database à l’aide de Add-Migration Initial –IgnoreChanges (voir https://msdn.microsoft.com/en-us/data/dn481501.aspx ). Sinon, utilisez Update. -Database -TargetMigration: 0

Lorsque vous effectuez une restauration, il abandonne si des données existent dans les colonnes. Vous devrez peut-être exécuter Update-Database -Force.