128 votes

Comment supprimer et recréer de zéro une base de données EF Code First existante ?

J'utilise EF Code First avec EF 5 dans VS 2012. J'utilise PM update-database et j'ai une méthode simple pour remplir quelques tableaux avec des données d'exemple.

Je voudrais supprimer et recréer mon x.mdb. L'historique des mises à jour semble être désynchronisé. Si je commente tous mes DBSets dans mon contexte, update-database fonctionne sans erreur mais laisse quelques tables dans la BD. Comme je n'ai pas de données de valeur dans la base de données, il semble que le plus simple soit de tout réinitialiser.

Comment puis-je y parvenir ?

6voto

Greck Points 82

Dbctx.Database.EnsureDeleted() ; dbctx.Database.EnsureCreated() ;

5voto

SAm Points 1846

Que diriez-vous de

static void Main(string[] args)
{
    Database.SetInitializer(new DropCreateDatabaseIfModelChanges<ExampleContext>());  
    // C
    // o
    // d
    // i
    // n
    // g
}

Je l'ai récupéré sur Programmation d'Entity Framework : Code First Pg 28 Première édition.

4voto

Il y a plusieurs façons de déposer une base de données ou de mettre à jour une base de données existante, vous pouvez simplement passer aux migrations précédentes.

dotnet ef database update previousMigraionName    

Mais certaines bases de données ont des limitations comme l'interdiction de modifier après la création de relations, ce qui signifie que vous n'avez pas les privilèges nécessaires pour supprimer les colonnes des fournisseurs de base de données ef core, mais la plupart du temps, dans ef core, la suppression de la base de données est autorisée. et ensuite vous utilisez à nouveau la migration précédente.

dotnet ef database drop
PMC command 
PM> drop-database

OU vous pouvez supprimer manuellement la base de données et effectuer une migration.

1voto

Florian Winter Points 61

Si vous avez créé votre base de données en suivant ce tutoriel : https://msdn.microsoft.com/en-au/data/jj193542.aspx

... alors ceci pourrait fonctionner :

  1. Supprimer tout .mdf y .ldf dans le répertoire de votre projet
  2. Allez dans View / SQL Server Object Explorer et supprimez la base de données de (localdb). \v11.0 sous-nœud. Voir aussi https://stackoverflow.com/a/15832184/2279059

1voto

Jack Miller Points 429

En utilisant EF6 avec ASP.Net Core 5, j'ai trouvé ces commandes pratiques lors de la première initialisation de la base de données :

Remove-Migration -force; Add-Migration InitialMigration; Update-Database;

Il supprime la dernière migration (qui devrait être la seule), la crée à nouveau, puis rafraîchit la base de données. Vous pouvez donc taper ces trois commandes en une seule ligne dans le champ Package Management Console après avoir modifié votre DbContext et il mettra à jour InitialMigration et la base de données.

Un peu ennuyeux est qu'il compile votre projet trois fois de suite, mais au moins aucune autre étape manuelle (comme la suppression des fichiers de migration) n'est nécessaire.


Lorsque vous supprimez une entité, vous devez publier Remove-Database avant la mise à jour. Donc la ligne devient :

Remove-Migration -force; Add-Migration InitialMigration; Remove-Database; Update-Database;

Problématique ici : Vous devez confirmer la suppression de la base de données + 4 reconstructions.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X