Comment utiliser Entity Framework dans le premier Drop-Create mode de Code?

J'utilise Entity Framework v4. J'ai suivi les instructions de la section de la Nerd Dîner tutoriel. Je suis actuellement en mode Développement (pas disponible dans des environnements supérieurs) et je voudrais que les tables soient recréées à chaque nouveau déploiement, car les modèles sont encore très volatiles et je ne me soucie pas de conserver les données. Cependant, cela ne se produit pas. Les Tables ne sont pas créées/modifiées, ou tout ce qui arrive à la base de données. Si je passe à un modèle de migration en utilisant le Gestionnaire de paquets commandes: activer-migrations, ajoutez-les migrations (initial), cela fonctionne, et utilise mon migrations. Cependant, comme je ne veux pas encore avoir de migrations granulaires et que je ne veux que mon script de création initial, je suis forcé de supprimer le dossier migrations, de refaire les commandes (enable-migrations, add-migration) et de supprimer la base de données manuellement, chaque fois que je change quoi que ce soit.

Comment faire pour que le comportement de drop/create du code se produise en premier?

34
demandé sur Sergey Berezovskiy 2013-03-01 20:50:13

2 réponses

Utiliser DropCreateDatabaseAlways initialiseur de votre base de données. Il recréera toujours la base de données lors du premier usage du contexte dans le domaine app:

Database.SetInitializer(new DropCreateDatabaseAlways<YourContextName>());

en fait si vous voulez lancer votre base de données, alors créez votre propre initialiseur, qui sera hérité de DropCreateDatabaseAlways:

public class MyInitializer : DropCreateDatabaseAlways<YourContextName>
{
     protected override void Seed(MagnateContext context)
     {
         // seed database here
     }
}

Et de le définir avant la première utilisation du contexte

Database.SetInitializer(new MyInitializer());
51
répondu Sergey Berezovskiy 2013-03-01 17:00:44

si la base de données existe déjà et que vous voulez faire des changements à votre modèle, vous utilisez DropCreateDatabaseIfModelChanges<YourContextName>

0
répondu Sam Yim 2016-11-30 14:20:43