EntityFramework 7, migrations et ConnectionString

c# entity-framework-core

Question

J'essaie de créer un site Web simple en utilisant asp.net vnext et EF 7.0. Pour le développement, j'utilise localDB et les migrations fonctionnent bien. Ensuite, je déploie mon site sur Azure et souhaite appliquer les migrations à Azure SQL Server.

Existe-t-il un moyen d'appliquer les migrations à la base de production, ou comment modifier la chaîne de connexion de manière dynamique pour les migrations?

Vous ne voulez pas changer la chaîne de connexion chaque fois que j'applique des migrations.

Réponse acceptée

Il y a 3 façons d'appliquer les migrations.

  1. Programmation (obsolète: voir mise à jour ci-dessous)

    context.Database.ApplyMigrations()
    
  2. De la ligne de commande. Ceci est vraiment destiné aux développeurs qui gèrent leurs bases de données locales, pas aux serveurs distants. Comme vous l'avez indiqué, si vous utilisez Azure, votre projet local doit contenir une chaîne de connexion à Azure.

  3. Produire et exécuter manuellement un script.

     $ dnx ef migrations script
    

    (ou)

     PM> Script-Migration
    

Les arguments de ces commandes (et les commandes exactes) ne sont pas encore définis à 100%. Il n'y a pas de documentation officielle sur les migrations. Dans l'intervalle, ce document de conception présente les commandes planifiées pour les migrations.

METTRE À JOUR

L'API est maintenant

context.Database.Migrate()

Réponse populaire

Le code ci-dessous dans Startup.cs appliquera la migration de la base de données au démarrage.

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {

        // other app setup omitted.

        if (env.IsDevelopment())
        {
            // development settings here.
            app.UseDeveloperExceptionPage();
        }
        else
        {
            // production settings here.
            try
            {
                using (var serviceScope = app.ApplicationServices.GetRequiredService<IServiceScopeFactory>()
                                             .CreateScope())
                {
                    serviceScope.ServiceProvider.GetService<YourDbContext>()
                                .Database.Migrate();
                }
            }
            catch
            {
                // ignored
            }
        }
    }



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