Comment forcer le code EF d'abord à recréer des bases de données?
J'ai eu un tas de tableaux Premier Code créé.
Puis en SQL j'ai supprimé une table pour que je puisse inévitablement poser cette question sur le tapis.
Lors de l'utilisation de update-database
de gestion de paquets console j'obtiens:
Ne peut pas trouver l'objet "dbo.ContractParents", car il n'existe pas
ou vous n'avez pas les autorisations.
Quelle est la meilleure façon de recréer ma table?
J'ai lu sur context.Database.CreateIfNotExists();
Je l'ai mis dans ma graine de fonction, mais rien à faire.
Merci!
source d'informationauteur Pinch
Vous devez vous connecter pour publier un commentaire.
Pour expliquer ce qui se passe avec votre mise à jour de la base de données de commande et le pourquoi de la
context.Database.CreateIfNotExists()
méthode dans la graine n'a pas fonctionné:Lorsque vous exécutez la mise à jour de la base de données de commande, il regarde d'abord à votre chaîne de connexion pour voir si la base est là. Si c'est ça ressemble à l'histoire de la migration de la table et vérifie que contre ce qui est en vous
DbContext
classe. Si il voit qu'il y a des tables manquantes ou les modifications qu'il tentera de mettre à jour la base de données. La Graine méthode n'est pas appelée qu'après que c'est fait, c'est pourquoi cela ne fonctionne pas.Tout en développant l'utilisation de EF-Premier Code, j'ai l'habitude de considérer le problème de plusieurs façons différentes selon la taille de ma base de données. J'ai l'habitude de est allé à la route de la suppression de toutes les tables (y compris l'histoire de la migration de la table), puis en exécutant la mise à jour de la base de données de commande de nouveau. Fonctionne très bien, vraiment beaucoup de temps si vous avez beaucoup de tables avec beaucoup de contraintes FK.
Je me suis finalement devenu fatigué de lui et a trouvé ces scripts de faire l'abandon de tables de façon exponentielle plus rapide. Je suis allé parce que j'étais l'exécution de mon application sur Azure. Quand je suis en cours d'exécution sur ma machine locale, je voudrais simplement supprimer l'intégralité de la base de données et de faire une nouvelle base de données avec le même nom.
Solution élégante? Pas de.
Cela fonctionne? Plus ou moins...
Pour encore un autre fromage option...
Clic droit sur votre base de données dans l'explorateur de serveurs, et appuyez sur supprimer
Ensuite, vous pouvez faire
Sale de mise à jour, propre résultat 🙂
Pour une approche rapide et sale, vous aurez de la maison pour le dîner, sur le temps long, avec beaucoup de dataloss (je suis toujours en version bêta à l'aide des données de test)
baisse de la dbo.__MigrationHistory table système
ainsi que tous vos autres tables.
De sauvegarder vos données avant de!
update-database -verbose
(vous pouvez avoir besoin d'un peu de sauce avec votre spaghetti)Je ne suis pas impressionné, mais il fonctionne.
J'espère que quelqu'un va venir avec une meilleure réponse dans le futur.
Il serait aider à vraiment comprendre les migrations mieux.