J'utilise EF Code First avec EF 5 dans VS 2012. J'utilise PM update-database
commande et j'ai une méthode de départ simple pour remplir des tableaux avec des exemples de données.
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
s'exécute sans erreur mais laisse des tables dans la base de données. Comme je n'ai pas de données précieuses dans la base de données, le plus simple semble de tout réinitialiser.
Comment puis-je accomplir cela?
Si je comprends bien ...
Si tu veux start clean
:
1) Supprimez manuellement votre base de données - où que ce soit (je suppose que votre connexion est triée), ou videz-la, mais il est plus facile/sûr de l'effacer tous ensemble - car il y a system __MigrationHistory
table - vous devez également supprimer cette fonction.
2) Supprimer tout migration files
- qui sont sous Migrations
- et nommés comme des nombres, etc. - supprimez-les tous,
3) Reconstruisez votre projet contenant les migrations (et le reste) - et assurez-vous que votre projet est configuré (configuration) pour se construire automatiquement (cela peut parfois poser problème, mais probablement pas pour vous),
4) Run Add-Migration Initial
encore _ puis Update-Database
Si vous avez travaillé correctement pour créer vos migrations à l’aide de la commande Add-Migration "Name_Of_Migration"
vous pouvez alors procéder comme suit pour obtenir un démarrage propre (réinitialisation, avec perte de données, bien sûr):
Update-database -TargetMigration:0
Normalement, votre base de données est vide maintenant puisque les méthodes down ont été exécutées.
Update-database
Cela recréera votre base de données dans votre migration actuelle
Single Liner à supprimer, créer et Seed à partir de la console de Package Manager:
update-database -TargetMigration:0 | update-database -force
Kaboom.
Pour EntityFrameworkCore, vous pouvez utiliser les éléments suivants:
Update-Database -Migration 0
Cela supprimera toutes les migrations de la base de données. Ensuite, vous pouvez utiliser:
Remove-Migration
Pour supprimer votre migration. Enfin, vous pouvez recréer votre migration et l’appliquer à la base de données.
Add-Migration Initialize
Update-Database
Testé sur EFCore v2.1.0
Que diriez-vous ..
static void Main(string[] args)
{
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<ExampleContext>());
// C
// o
// d
// i
// n
// g
}
J'ai pris ceci de cadre d'entité de programmation: Code d'abord , Pg 28 première édition.
Si vous avez créé votre base de données à la suite de ce didacticiel: https://msdn.Microsoft.com/en-au/data/jj193542.aspx
... alors cela pourrait fonctionner:
.mdf
et .ldf
fichiers dans votre répertoire de projetdbctx.Database.EnsureDeleted (); dbctx.Database.EnsureCreated ();
Prenez ces mesures:
Dbset<Item> Items{get;set;}
et dans la console Nuget, exécutez ces commandesIl supprimera les tables qui n'existent pas dans le contexte, mais qui ont déjà été créées dans la base de données.