4.1 EF Code de la Première et de la Base de données Existante .NETTE de l'effectif
J'ai une base de données appelée ApplicationName_Development en cours d'exécution sur SQL Server 2008 R2 édition Développeur sur mon développement de la zone.
Ai-je ajouté .NETTE de l'effectif des tables de la base de données sans problème. Quand j'ai essayé d'obtenir le Premier Code de travail, j'ai reçu le message d'erreur suivant:
Le serveur a rencontré une erreur
le traitement de la demande. L'exception
le message est "Modèle de compatibilité ne peut pas
être vérifiées car la base de données n'
contiennent pas de modèle de métadonnées. Assurer
que IncludeMetadataConvention a
été ajouté à la DbModelBuilder
les conventions.
Après quelques recherches sur google, j'ai découvert que j'ai dû supprimer la base de données et de laisser EF créer la base de données. C'est bien, mais j'ai perdu tous mes .NETTE de l'effectif des tables. Je peux revenir en arrière et ajouter les membres des tables de à nouveau, mais si mes changements de modèle et de l'EF doit recréer la base de données puis-je ajouter de la composition des tables de à nouveau.
Comment puis-je contourner ce problème?
OriginalL'auteur Mike | 2011-03-28
Vous devez vous connecter pour publier un commentaire.
Trouvé une solution plus facile ici. J'espère que cette aide.
http://www.paragm.com/ef-v4-1-code-first-and-asp-net-membership-service/
OriginalL'auteur cbrcoder
C'est la façon dont le code-premier travail. L'idée principale du premier code, c'est que vous ne touchez pas votre base de données car il est de la responsabilité du modèle pour la création de la base de données. Si vous souhaitez personnaliser votre base de données, vous devez créer des
IDatabaseInitializer
et ajouter votre SQL personnalisé.Maintenant vous avez seulement besoin de l'installation de votre cutom intializer sur le démarrage de votre application:
Si vous ne voulez pas le faire de cette façon, vous devez gérer manuellement votre base de données et l'ensemble de l'initialiseur à null.
Alors vous êtes à la recherche pour la première base de données au lieu de le premier code. Version actuelle de l'EF n'a pas de base de données de l'évolution des fonctionnalités. Il ne peut déposer de la base de données et créer à partir de zéro. Vous pouvez writy votre propre base de données de l'initialiseur qui sera en mesure de modifier uniquement les DB, mais il peut être compliqué comme projet distinct.
Vérifiez ces questions connexes: stackoverflow.com/questions/4485742/... et stackoverflow.com/questions/5463121/...
Merci pour l'information. Je suppose que jusqu'à ce qu'ils mettent en œuvre des migrations, nous sommes hors de la chance.
Pour info (pour les personnes venant en ce moment), les migrations de support existe (et il est assez grand, en fait)
OriginalL'auteur Ladislav Mrnka
Une autre option pourrait être d'utiliser le Système.Web.La gestion de l'espace de noms. J'ai eu beaucoup de succès avec le code ci-dessous:
Il vient de créer la base de données et après que vous pouvez ajouter des utilisateurs à la norme de l'adhésion de l'API.
OriginalL'auteur wullinkm
Voici une autre possibilité.
Si vous regardez la
MvcMusicStore
de l'échantillon, il y a unSampleData
classe qui est responsable de l'amorçage de la base de données sur une reconstruction. LeSampleData
classe hérite deDropCreateDatabaseIfModelChanges
, et remplace laSeed
méthode. Cette classe est passé à laDatabase.SetInitializer
dans leApplication_Start
méthode dansglobal.asax
.J'avais la même erreur que vous, jusqu'à ce que j'ai modifié la classe parente de
SampleData
àCreateDatabaseIfNotExist
.Ensuite, vous pouvez remplacer la
Seed
méthode pour insérer toutes les données que vous désirez au démarrage, sans qu'il souffle loin de la base de données.OriginalL'auteur Phil
Pendant que vous sont en train de créer 2 bases de données et de deux chaînes de connexion. Un pour SqlMembership (à l'aide de aspnet_regsql) et un pour votre Application EF. Si vous souhaitez les fusionner dans un seul DB dans la production, il suffit de modifier la chaîne de connexion dans le web.config.version à être le même. Ensuite, le modèle EF changements déposez simplement vos applications db et pas votre adhésion DB.
Par le traitement de votre composant d'authentification séparément, vous allez naturellement dissocier votre système d'authentification à partir de votre système d'application. Alors, si vous souhaitez changer de fournisseurs d'appartenance, il sera préférable de l'installation.
Que le système se développe, vous aurez probablement besoin d'un soutien non-pure modèles sans EF premier code, donc c'est un bon modèle pour aller en bas de ce chemin.
OriginalL'auteur Doug
J'ai trouvé la façon la plus simple sans jouer avec autre chose était la suivante.
J'ai couru à la demande de première fois avec
DropAndRecreatedatabase
toujours dans leInitilizer
.Cela a créé ma base de données pour la première fois.
Après cela, j'ai changé de ce
DropCreateDatabaseIfModelChanges
.OriginalL'auteur Dee