Comment faire pour re-créer une base de données pour Entity Framework?
J'ai pénétré dans un mauvais état de ma ASP.Net MVC 5 du projet, à l'aide de Code-Première Entity Framework. Je ne se soucie pas de perdre des données, je veux juste être en mesure de commencer à zéro, recréer la base de données et commencer à utiliser le Code-Première migrations.
Actuellement je suis dans un état où chaque tentative de mise à Jour de la Base de données de résultats dans une exception levée ou obtenir un message d'erreur. Aussi le site ne peut pas accéder à la base de données correctement. Comment puis-je essuyer toutes les migrations, re-créer la base de données et commencer à partir de zéro, sans avoir à créer un nouveau projet? En d'autres termes, je veux garder mon code mais supprimer la base de données.
Plus tard, je tiens également à obtenir le déploiement de la base de données (SQL Server sur Azure) en synchronisation. Encore une fois, je n'ai pas l'esprit de la suppression de toutes les données, je veux juste le faire fonctionner.
Veuillez fournir toute façon les étapes pour revenir à un état propre. Très apprécié.
- TBH si vous simple voulez
DROP DATABASE
alors....
Vous devez vous connecter pour publier un commentaire.
Suivez les étapes ci-dessous:
1) d'Abord aller dans l'Explorateur de serveurs dans Visual Studio, vérifiez si le ".mdf" Connexions de Données pour ce projet sont connectés, si oui, clic droit et supprimer.
2 )Allez dans l'Explorateur de solutions, cliquez sur l'icône afficher Tous les Fichiers.
3), Passez à App_Data, clic droit et supprimer tout ".mdf" fichiers de ce projet.
4) Supprimer les Migrations dossier par un clic droit et supprimer.
5) Aller à SQL Server Management Studio, assurez-vous que la base de données pour ce projet n'est pas là, sinon le supprimer.
6) Aller dans le Gestionnaire de Package Console dans Visual Studio et type:
Enable-Migrations -Force
Add-Migration init
Update-Database
7) Exécuter votre application
Remarque: Dans l'étape 6 de la partie 3, si vous obtenez une erreur "Impossible de joindre le fichier...", c'est probablement parce que vous ne supprimez pas les fichiers de base de données complètement dans SQL Server.
sqllocaldb p mssqllocaldb
;sqllocaldb delete mssqllocaldb
Je voudrais ajouter que la réponse de Lin est correct.
Si vous avez mal supprimer le MDF, vous aurez à résoudre. Pour résoudre le visser en place des connexions dans le projet à la MDF. Réponse courte; à recréer et à supprimer correctement.
update-database -force
[Utiliser la force si nécessaire]Fait, profitez de votre nouvelle bd
Mise à JOUR 11/12/14 - j'en utilise tout le temps quand je fais une rupture db changement.
J'ai trouvé c'est un excellent moyen de faire reculer les migrations à l'origine db:
Exécuter la migration normale pour le mettre au courant
Update-Database -TargetMigration:0 -force
[Cela va détruire toutes les tables et toutes les données.]Update-Database -force
[utiliser la force si nécessaire]Cela a fonctionné pour moi:
Cliquez-droit et sélectionnez supprimer.
Alors que cette question est fondée par ne pas se soucier de données, parfois, la maintenance des données est essentiel.
Si oui, j'ai écrit une liste d'étapes sur la façon de récupérer à partir d'Entity Framework cauchemar lorsque la base de données a déjà des tables avec le même nom ici: Comment faire pour récupérer à partir d'Entity Framework cauchemar de la base de données a déjà des tables avec le même nom
Apparemment... un modérateur a jugé bon de supprimer mon post, donc je vais le coller ici:
Comment faire pour récupérer à partir d'Entity Framework cauchemar de la base de données a déjà des tables avec le même nom
Description: Si vous êtes comme nous, lorsque votre équipe est de nouveau à EF, vous vous retrouverez dans un état où vous ne pouvez pas créer une nouvelle base de données locale ou vous ne pouvez pas appliquer les mises à jour de votre base de données de production. Vous voulez revenir à l'EF de l'environnement et puis de s'y tenir à l'essentiel, mais vous ne pouvez pas. Si vous l'obtenez de travail de la production, vous ne pouvez pas créer une bd locale, et si vous l'obtenez de travail local, votre serveur de production devient hors de synchronisation. Et enfin, vous ne voulez pas supprimer toute la production de données du serveur.
Symptôme: ne Peut pas exécuter mise à Jour de la Base de données parce que c'est en essayant de lancer le script de création et de la base de données a déjà des tables avec le même nom.
Problème de Fond: EF comprend où la base de données actuelle est par rapport à l'endroit où le code est basé sur une table dans la base de données appelée dbo.__MigrationHistory. Quand il regarde les Scripts de Migration, il essaie de reconsile où il a été le dernier à avec les scripts. S'il le peut, il essaie juste de les appliquer dans l'ordre. Cela signifie, il remonte à la création initiale de script et si vous regardez la première partie de la commande, ça va être la CreeateTable pour la table que l'erreur qui se passait sur la.
Pour comprendre plus en détail, je vous recommande de regarder les deux vidéos référencées ici:
https://msdn.microsoft.com/en-us/library/dn481501(v=vs. 113).aspx
Solution: Ce que nous devons faire est de tromper EF en pensant que la base de données actuelle est à jour, tout en n'appliquant pas ces CreateTable commandes. Dans le même temps, nous voulons toujours ces commandes existent afin que nous puissions créer de nouvelles bases de données locales.
Étape 1: base de données de Production propre
Tout d'abord, faire une sauvegarde de votre base de données de production. Dans SSMS, Cliquez-Droit sur la base de données, Sélectionnez "Tâches" > Exporter des Données de la couche application..." et suivez les invites.
Ouvrez votre base de données de production et de supprimer/déplacer la dbo.__MigrationHistory table.
Étape 2: environnement Local propre
Ouvrez votre migrations dossier et de le supprimer. Je suis en supposant que vous pouvez obtenir tout cela en arrière à partir de git si nécessaire.
Étape 3: Recréer Initiale
Dans le Gestionnaire de paquets, exécutez "Activer les Migrations" (EF vous invite à utiliser -ContextTypeName si vous avez de multiples contextes).
Exécutez "Ajout de la Migration Initiale -verbose". Cela va Créer le script initial pour créer la base de données à partir de zéro basé sur le code actuel.
Si vous aviez des semences opérations dans la Configuration précédente.cs, puis copiez que, dans l'ensemble.
Étape 4: Astuce EF
À ce point, si nous avons couru mise à Jour de la Base de données, nous aimerions obtenir l'erreur d'origine. Donc, nous avons besoin de tromper EF à penser qu'il est jusqu'à ce jour, sans que l'exécution de ces commandes. Donc, aller dans la méthode de la migration Initiale que vous venez de créer et commenter tous.
Étape 5: Mise À Jour De La Base De Données
Avec pas de code à exécuter sur le processus, EF créer la dbo.__MigrationHistory table avec l'entrée correcte de dire qu'il a couru ce script correctement. Aller et de vérifier si vous le souhaitez.
Maintenant, décommentez que le code et les enregistrer.
Vous pouvez exécuter mise à Jour de la Base de données de nouveau si vous voulez vérifier que EF pense de son jusqu'à ce jour. Il ne sera pas exécuter l'étape avec tous les CreateTable commandes, car il pense que c'est déjà fait.
Étape 6: Confirmer EF est en FAIT jusqu'à ce jour
Si vous avez eu un code qui n'avait pas encore eu les migrations sont appliquées, c'est ce que j'ai fait...
Exécutez "Ajout De La Migration MissingMigrations"
Cela va créer pratiquement vide script. Parce que le code est déjà là, il y avait effectivement le bon de commandes pour créer ces tables dans le premier script de migration, de sorte que je viens de couper le CreateTable et l'équivalent de déposer les commandes dans le Haut et le Bas des méthodes.
Maintenant, exécutez mise à Jour de la Base de données de nouveau et de le regarder à l'exécution de votre nouveau script de migration, de créer les tableaux correspondants dans la base de données.
Étape 7: Re-confirmer et valider.
De construction, de test, d'exécuter. S'assurer que tout est en cours d'exécution, puis valider les modifications.
Étape 8: Laisser le reste de votre équipe, de savoir comment procéder.
Lorsque la personne à côté de mises à jour, EF ne sais pas ce qu'il frappe étant donné que les scripts, c'était exécutée avant n'existent pas. Mais, en supposant que les bases de données locales peuvent être emportés et re-créé, c'est tout bon. Ils devront déposer leur base de données locale et ajouter le créer à partir de EF à nouveau. Si ils avaient des changements locaux et dans l'attente de migrations, je vous recommande de créer leur DB à nouveau sur le master, passer à leur branche de fonctionnalité et de re-créer les scripts de migration à partir de zéro.
Tiens juste à ajouter à l'excellente réponse de @Lin:
5) B.
Si vous n'avez pas de SQL Management Studio, aller dans "Explorateur d'Objets SQL Server".
Si vous ne voyez pas votre projet db dans la localdb "Explorateur d'Objets SQL Server", puis cliquez sur "Ajouter SQL server" bouton pour l'ajouter à la liste manuellement. Vous pouvez ensuite supprimer le db à partir de la liste.
Un possible très simple correctif qui a fonctionné pour moi. Après la suppression de toutes les références de base de données et les connexions que vous trouverez dans server/serverobject explorer, cliquez-droit sur le dossier App_Data (à ne pas montrer tous les objets à l'intérieur de l'application pour moi) et sélectionnez ouvrir. Une fois ouvert, mettre tous la base de données/etc. les fichiers dans un dossier de sauvegarde ou si vous avez le courage juste de les supprimer. Exécutez votre application et il doit recréer tout à partir de zéro.
Ma solution est la mieux adaptée pour :
- supprimé votre fichier mdf
- voulez-vous recréer votre base de données.
Pour recréer votre base de données vous avez besoin d'ajouter la connexion à l'aide de Visual Studio.
Étape 1 : Accédez à l'Explorateur de serveurs ajouter une nouvelle connexion( ou à chercher une ajouter db icône).
Étape 2 : Changement source de données à Microsoft SQL Server Base de données de Fichier.
Étape 3 : ajouter n'importe quel nom de base de données que vous désirez dans la de la Base de données nom de fichier champ.(de préférence le même nom que vous avez dans le web.config AttachDbFilename attribut)
Étape 4 : cliquez sur parcourir et accédez à l'emplacement où vous allez aimer pour être situé.
Étape 5 : dans le gestionnaire de paquets de la console de commande exécuter
update-database