Entity Framework Code d'erreur: le modèle de la sauvegarde le contexte a changé depuis la base de données a été créé
J'ai créé un "Code" POCO pour l'utiliser contre une base de données existante à l'aide de Entity Framework 4 et le CTP4. Quand je lance une requête, j'obtiens le message d'erreur
Le modèle de la sauvegarde de la " xyzContext contexte a changé depuis la base de données a été créé. Soit manuellement supprimer/mettre à jour la base de données, ou l'appel de la Base de données.SetInitializer avec un IDatabaseInitializer instance. Par exemple, le RecreateDatabaseIfModelChanges stratégie sera automatiquement supprimer et recréer la base de données, et éventuellement de graines avec de nouvelles données.
Je suis pas clair sur les raisons de ce qui se passe ou ce que je peux changer. J'ai simplement créé le POCO, a défini une simple DbContext, fait un peu de bricolage, et a ensuite essayé d'exécuter une requête simple. Depuis que je suis en utilisant le Code de "Seulement", je suis pas au courant de tous les paramètres de configuration qui doivent être faits. Et je ne veux certainement pas à recréer ou de supprimer la base de données depuis une base de données existante.
Merci pour toutes les idées.
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé la réponse dans les commentaires sur ce post sur le blog de Scott Guthrie.
http://weblogs.asp.net/scottgu/archive/2010/08/03/using-ef-code-first-with-an-existing-database.aspx
Database.SetInitializer<Production>(null);
C'est un bug dans CTP4 pour l'utilisation EF avec des bases de données existantes.
Vous pouvez résoudre le problème en appelant le:
dans la méthode Application_Start Mondiale.asax
protected void Application_Start()
{
Database.SetInitializer<MVCMovie1.Models.MovieDBContext>(null);
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
J'ai fait remarquer ci-dessus et il a travaillé au moment où je viens de jouer avec EF5 à familarise moi-même avec son fonctionnement. Maintenant, je suis en train d'écrire "réelle" de code et j'ai déménagé loin de la définition d'une base de données à initialiser par le contexte dans le code, en raison de l'architecture, j'ai installé sur l'utilisation de la MEF pour instancier tout DbContext et injecter toutes les dépendances de la configuration que composable pièces.
Donc encore une fois, j'ai immédiatement couru dans l'erreur décrite ci-dessus mais cette fois, je choisis de le résoudre en utilisant des entrées du fichier de configuration comme ci-dessous.
Donc par la mise en disableDatabaseInitialization="true" dans le fichier de configuration de la section pour entityFramework, vous pouvez résoudre l'erreur décrite ci-dessus et comme il n'est pas dans le code l'un des avantages est la possibilité de "plus facile" à utiliser abstraite constructeurs/usines à créer le contexte.
Tout ce que j'avais à faire était de déposer le
__MigrationHistory
table.Contexte:
J'ai reçu ce message d'erreur lorsque j'ai changé le nom d'une table. Après j'ai ajouté l'annotation
[Table("NewTableName")]
à l'un de mes modèles, Entity Framework généré un__MigrationHistory
table.J'ai eu le même problème - re-ajout de la migration et de la mise à jour de la base de données ne fonctionne pas et aucune des réponses ci-dessus me semblait juste. L'inspiration frappe-moi - je suis en utilisant plusieurs niveaux (web, données, et une entreprise). Le web de la couche jamais jeté cette exception - c'était la couche de gestion (qui-je définir comme l'application de la console de test et de débogage). S'avère que la couche n'était pas à l'aide de la droite de la chaîne de connexion pour obtenir la db et de faire le contexte. J'ai donc ajouté la chaîne de connexion à l'application config et à l'alto, il fonctionne. Cette mise ici pour d'autres personnes qui pourraient rencontrer le même problème.