Entity Framework Migrations - Activez AutoMigrations avec la migration ajoutée
Je suis en utilisant Entity Framework 4.3 les Migrations dans mon projet. Je voudrais utiliser les migrations Automatiques de sorte que lorsque je apporter des modifications à mon domaine d'objets et de ma classe de contexte, de ma base de données automatiquement mises à jour lorsque j'exécute le projet. J'ai ce travail jusqu'à présent.
Je tiens également à utiliser des Migrations en plus des migrations automatiques, et je voudrais l'application pour accéder automatiquement à la dernière version (basé sur mon ajoutée des migrations) quand je lance l'application.
Pour ce faire, j'ai placé cela dans le monde.asax fichier...
Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyContext, Core.Migrations.Configuration>());
Maintenant cela fonctionne, mais lorsque je fais ceci, il n'est plus automatiquement les mises à jour de la base de données sur mon domaine d'objets.
Je voudrais être en mesure de supprimer complètement la base de données et ensuite exécuter l'application et de tous les migrations automatiques exécuter, puis avoir mon explicite des migrations d'exécuter et de mettre la base de données jusqu'à la dernière version.
Je sais que j'ai eu ce travail dans un projet précédent, mais je ne suis pas sûr de ce que je fais mal dans ce cas.
Grâce
source d'informationauteur jdavis
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour passer une configuration qui a le AutomaticMigrationsEnabled la valeur true dans le constructeur. Quelque chose comme cela devrait vous aider:
avec MyConfiguration être quelque chose comme:
AVERTISSEMENT: Juste piraté ce, alors que de petites modifications pourraient être nécessaires pour obtenir ce à compiler
EDIT:
Viens de vérifier avec EF 4.3.1 et le code est comme ça pour l'initialiseur:
et ce pour la classe de configuration:
Après cogner ma tête sur ce, pendant plusieurs heures, j'ai finalement trouvé une solution qui crée la base de données si nécessaire ou mises à niveau si hors de date. Nous utilisons cette technique dans la Galerie Serveur Pro pour le rendre facile à installer la première fois ou la mise à niveau des versions précédentes.
J'ai écrit un billet de blog avec un peu plus de détails:
À l'aide de Entity Framework Code First Migrations à l'auto-création et mise à jour automatique d'une application
Voici ma solution actuelle, dont je ne suis pas complètement satisfait.
Je suis en fait à la création de deux initialiseurs. Le premier, à l'aide de CreateDatabaseIfNotExists, rendu la main avec traverse et crée des tables basées sur mes objets du Domaine. La seconde, à l'aide de MigrateDatabaseToLatestVersion, exécute la totalité de mon explicite migrations.
Je ne l'aime pas parce que les Migrations Automatiques sont essentiellement des personnes handicapées. Donc, pour ajouter ou modifier mon modèle de Domaine, j'ai d'abandonner complètement la base de données et de le recréer. Ce ne sera pas acceptable une fois que j'ai déménagé de l'application en production.
Vous avez juste besoin de faire
Si votre application contient de Démarrage.cs de la classe, vous pouvez utiliser DbMigrator Classe comme suit
Accédez à votre App_Start dossier, ouvrez le Démarrage.Auth
Collez ces lignes de code à l'intérieur de ConfigureAuth méthode
ce que ce fait est de mettre à jour votre base de données vers la version la plus récente à tout moment du démarrage de l'application jusqu'