Le modèle de soutien à l' '--Contexte " contexte a changé depuis la base de données a été créé - mais db est la nouvelle production de la base de données
J'ai eu cette erreur pour la 762nd temps, mais cette fois, je suis dès que je tente d'accéder à mon site de Production, tout de suite après la suppression de la "production" de la base de données sur Azure, puis la publication de mon site.
The model backing the 'PropertyContext' context has changed since the database was created. Consider using Code First Migrations to update the database
J'ai supprimé la base de données parce que je n'arrivais pas à résoudre le problème de toute autre façon, mais il ne fonctionne toujours pas.
Quelques points importants:
- Je suis en utilisant EF6 et la publication d'Azur.
- C'est 1 des 2 projets/sites qui utilise les mêmes Pensions de projet. Je n'ai pas
des problèmes avec les autres, il suffit de celle-ci. - J'ai essayé de publier le problème premier projet (après la suppression de la db) et
deuxième avec le même résultat. - J'ai essayé de supprimer à la fois les SITES web et la base de données à partir d'Azure et un nouveau départ
- J'ai essayé de supprimer toutes les migrations et de départ avec un nouveau modèle de données
-
J'ai essayé ce qui suit dans mon Global.asax (dans les deux projets)
Base de données.SetInitializer PropertyContext>(null); <-- DONC, ne me laisse pas mettre le premier <
et
Database.SetInitializer(new MigrateDatabaseToLatestVersion<PropertyContext, MyConfiguration>());
new PropertyContext().Database.Initialize(true);
Je suis en utilisant .net 4.5
Pourquoi j'obtiens cette erreur sur une nouvelle base de données et comment puis-je obtenir ce site fonctionne?
- Voici un lien montrant comment résoudre ce problème: dotnetcurry.com/showarticle.aspx?ID=820
- Ne fonctionne pas comme la plupart des commandes générées ne fonctionnent pas sur Azure
- Hey Stuart, pas de réponse. Pourriez-vous donner quelques infos si vous continuez d'avoir des problèmes?
- Comme indiqué sur Ohlin réponse, j'ai fini par suppression de tous les sites et les bases de données à partir du serveur, supprimé toutes les migrations, le déploiement de nouveau. Donc, essentiellement, il n'y a pas de réponse à cela.
- J'ai eu le même problème.. résolue en utilisant la Première Réponse de [Cette Question][1] [1]: stackoverflow.com/questions/13238203/...
- stackoverflow.com/questions/3600175/...
Vous devez vous connecter pour publier un commentaire.
Juste couru dans la même erreur dans les ASP.Net application. Dans mon cas, je n'ai pas utiliser le Premier Code, mais j'ai utilisé la norme ASP.Net fournisseur d'authentification qui utilise apparemment le Premier Code, et l'authentification a été rompue en raison de ce problème.
Ici est rapide et sale de la solution est en vous ne se soucient pas beaucoup sur les utilisateurs existants:
Pour moi la solution a été de laisser tomber le
dbo.__MigrationHistory
table, l'authentification a commencé à travailler par la suite. Être au courant! Cette solution n'est pas pour tout le monde! Cela permettra de résoudre le problème, mais il est potentiellement à risque.Si vous ne pouvez pas se permettre de perdre des données en Réseau* tables:
ASP.Net fournisseur d'authentification crée automatiquement des tables dans votre base de données:
Les tables sont vides par défaut, si vous n'avez pas créé de nouvelles connexions pour votre site web, vous pouvez utiliser "rapide et sale" solution ci-dessus. Si vous vous souciez au sujet de la préservation de l'utilisateur de l'information ou tout simplement curieux de la façon dont le Code Premières migrations de travail, procédez comme suit:
<connectionStrings>
élément.Ouvrir La Console Du Gestionnaire De Package:
Outils –> Gestionnaire de paquets de Bibliothèque –> Gestionnaire de Package Console
Remplacer le MyConnectionStringName avec le nom que vous avez consulté dans le site web.config.
Comme un résultat de cette commande, vous verrez un nouveau dossier "Migrations" avec un tas de code généré par le
Update-Database
de commande. Re-construire et re-déployer votre application, votre nouvelle migration de code sera exécuté au démarrage et porterait le schéma de base de données en synchronisation avec une version mise à jour de ASP.Net fournisseur d'authentification code.DropCreateDatabaseIfModelChanges
initialiseurLors de l'utilisation de Code de la Première avec les Migrations, votre base de données crée une table appelée
__MigrationHistory
de suivre le schéma actuel. Lorsque vous exécutez votre application votre Entity Framework vérifier que cette table assurez-vous que le schéma de base de données correspond à votre entités de base de données. Si elles ne correspondent pas, vous obtiendrez cette erreur.De mettre à jour votre base de données, procédez comme suit:
DbContext
App.Config
/Web.Config
fichier est "Définir comme Projet de Démarrage" (Si vous avez plusieurs Configs, il doit être l'un avec la Base de données de la Chaîne de Connexion défini.Update-Database -ConnectionStringName MyConnString
oùMyConnString
est le nom (pas de chaîne de connexion) de votre chaîne de connexion dans votreApp.Config
/Web.Config
Si vous obtenez une erreur comme ceci: "Impossible de mettre à jour la base de données pour correspondre le modèle actuel parce qu'il y a des changements en cours et de migration automatique est désactivé."
Vous devez activer les Migrations Automatiques et essayez de nouveau.
Pour permettre les Migrations Automatiques
Migrations
dossier (dans le projet avec votreDbContext
), ouvrirConfiguration.cs
.AutomaticMigrationsEnabled = true;
Pour arrêter Entity Framework/DbContext de la surveillance des changements sur votre base de données, vous pouvez simplement supprimer le
__MigrationHistory
table dans votre base de données. C'est ensuite à vous de faire en sorte que la base de données est mise à jour manuellement.Article MSDN ici
startup project
fixe pour moi.La solution c'est d'utiliser la méthode statique SetInitializer et le lier au contexte d'une valeur Null. Si vous travaillez sur une solution Web, la meilleure position pour écrire le code est dans le Application_Start Globale de votre.asax.cs fichier.
J'ai eu un problème similaire ce matin. Soudain, l'apparition de l'erreur et n'a pas pu être résolu:
J'ai un projet pour MVC et un autre projet pour le modèle, le contexte et les référentiels. J'ai travaillé pendant des semaines, mais aujourd'hui, il dit stop.
J'ai essayé de supprimer la base de données, activez-la migration, ajoutez-la migration et de mise à jour de la base de données autant de fois que je ai perdu le compte. J'ai ajouté les initialiseurs de MigrateDatabaseToLatestVersion ainsi que DropCreateDatabaseIfModelChanges. Tout cela en vain...
Ce qui a finalement fait le travail était de passer le modèle, le contexte et les référentiels dans le projet MVC (pas quelque chose que j'ai tenu sur)...puis il a travaillé dès la sortie de la boîte sans aucune modification de code à tous (en plus des espaces de noms)! Très étrange...
J'ai lu beaucoup de messages de blog au cours de la journée à essayer de résoudre ce problème. L'un d'eux (je ne sais pas lequel) a parlé d'un bug dans Visual Studio 2013 où la référence à des fichiers DLL n'étaient pas toujours mis à jour comme ils le devraient, ce qui suggère que mon projet MVC raté quelque chose quand j'étais en complément de la migration et de mise à jour de la base de données dans mon projet distinct. Mais c'est juste une supposition.
Je suis en utilisant EF 6.1 et .Net 4.5.1 dans ma solution.
Eu un problème similaire! La réponse est ici
http://www.asp.net/mvc/overview/older-versions/getting-started-with-aspnet-mvc3/cs/adding-a-new-field
(Rick Anderson)
Il existe deux approches pour la résolution de cette erreur:
Ont Entity Framework automatiquement supprimer et recréer la base de données basée sur le nouveau modèle de schéma de classe. Cette approche est très pratique lorsque vous faites l'objet d'un développement actif sur une base de données de test, car il vous permet de rapidement évoluer le modèle de base de données et schéma d'ensemble. L'inconvénient, cependant, est que vous perdez les données existantes dans la base de données — afin que vous ne souhaitez pas utiliser cette approche sur une base de données de production!
Explicitement modifier le schéma de la base de données existante afin qu'il corresponde au modèle de classes. L'avantage de cette approche est que vous gardez vos données. Vous pouvez effectuer ce changement, que ce soit manuellement ou par la création d'une base de données de changement de script.
J'ai passé quelques heures à essayer de résoudre ce problème. Un projet de travail, l'autre ne l'était pas.
J'ai eu différents projets de référencement différentes versions de
Entity Framework
. Dans mon cas, j'ai eu un Console application et un Service Windows application, à la fois le référencement d'un troisième projet contenant le code des classes de premier etDbContext
.Après l'exécution de
Update-Package EntityFramework
tout a bien fonctionné dans les deux projets.