web-dev-qa-db-fra.com

Comment supprimer et recréer à partir 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 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?

68
g.pickardou

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

89
NSGaga

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):

  1. Update-database -TargetMigration:0

    Normalement, votre base de données est vide maintenant puisque les méthodes down ont été exécutées.

  2. Update-database

    Cela recréera votre base de données dans votre migration actuelle

54
Daf De Giraf

Single Liner à supprimer, créer et Seed à partir de la console de Package Manager:

update-database -TargetMigration:0 | update-database -force

Kaboom.

26
Amadeo Gallardo

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

17
Gizmo3399

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.

3
SAm

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:

  1. Supprimer tout .mdf et .ldf fichiers dans votre répertoire de projet
  2. Accédez à l'Explorateur d'objets View/SQL Server et supprimez la base de données du sous-noeud (localdb)\v11.0. Voir aussi https://stackoverflow.com/a/15832184/2279059
1
Florian Winter

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

0
Greck

Prenez ces mesures:

  1. Supprime les objets à supprimer du contexte // Dbset<Item> Items{get;set;} et dans la console Nuget, exécutez ces commandes
  2. add-migration [nom_contexte]
  3. update-database -verbose

Il supprimera les tables qui n'existent pas dans le contexte, mais qui ont déjà été créées dans la base de données.

0
Shaahin