Mise à jour de la base de données après les modifications de modèle - Entity Framework 7

asp.net-core-mvc asp.net-mvc c# entity-framework entity-framework-core

Question

J'ai créé une application à l'aide de la dernière ASP.NET5 MVC 6 Entity Framework 7 et ai configuré les migrations à l'aide de

dnx . ef migration add Initial
dnx . ef migration apply

Cela fonctionne, mais lorsque je modifie le modèle, la base de données n'est pas mise à jour. J'aimerais que la base de données se mette à jour automatiquement après un changement de modèle lorsque j'exécute le programme.

Ma recherche ne me renvoie qu'à des informations anciennes qui ne semblent pas appropriées à Entity Framework 7.

Mon code actuel:

 public ApplicationDbContext(): base()
   {

        if (!_created)
        {

             Database.AsRelational().ApplyMigrations();
             _created = true;         
        }
  }

Quelqu'un peut me diriger dans la bonne direction?

Je crois que cela fonctionnait comme ceci:

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

Réponse acceptée

Vous devez exécuter manuellement les migrations avec EF7 à partir de la ligne de commande ou appeler Database.Migrate à partir du code. EF7 n'est pas automatiquement automatisé (décision délibérée). Après avoir modifié votre modèle, créez une nouvelle migration


Réponse populaire

Il semble y avoir une certaine confusion entre la création de migrations et le processus de mise à jour de la structure de la base de données.

Dans EF7, vous ne pouvez plus générer automatiquement la migration (le delta entre la structure de base de données actuelle et les définitions d'entité). Cela doit être fait en ligne de commande avec la commande "migrations add".

La mise à jour de la structure de la base de données peut toutefois toujours être effectuée via du code. Ceci est fait en utilisant la méthode dbContext.Database.Migrate (). Vous pouvez le connecter à votre démarrage afin que, lors du démarrage de votre application, celle-ci soit mise à jour avec la version actuelle de votre application.

Ainsi, votre flux de travail de développement peut être:

  1. modifier les définitions d'entité
  2. lancer la commande "migrations add"
  3. lancez votre application *

    • Le numéro 3 ci-dessus suppose que vous avez câblé l'appel Migrate () mentionné ci-dessus dans votre démarrage. Sinon, vous devez également exécuter manuellement la commande "mise à jour de la base de données".


Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi