EntityFramework 7, migrazioni e ConnectionString

c# entity-framework-core

Domanda

Sto cercando di creare un semplice sito web usando asp.net vnext e EF 7.0. Per lo sviluppo uso localDB e le migrazioni funzionano bene. Quindi distribuisco il mio sito in Azure e voglio applicare le migrazioni ad Azure SQL Server.

Esiste un modo per applicare le migrazioni al database di produzione o come applicare la stringa di connessione in modo dinamico per le migrazioni?

Non voglio cambiare la stringa di connessione ogni volta che applico le migrazioni.

Risposta accettata

Esistono 3 modi per applicare le migrazioni.

  1. Programmaticamente (obsoleto: vedi aggiornamento sotto)

    context.Database.ApplyMigrations()
    
  2. Dalla riga di comando. Questo è davvero pensato per gli sviluppatori che gestiscono i loro database locali, non i server remoti. Come notato, l'esecuzione su Azure richiederebbe al progetto locale di contenere una stringa di connessione in Azure.

  3. Produci e esegui manualmente uno script.

     $ dnx ef migrations script
    

    (o)

     PM> Script-Migration
    

Gli argomenti per questi comandi (e i comandi esatti) non sono ancora impostati al 100%. Non esiste documentazione ufficiale sulle migrazioni. Nel frattempo, questo documento di progettazione mostra i comandi pianificati per le migrazioni.

AGGIORNARE

L'API è ora

context.Database.Migrate()

Risposta popolare

Sotto il codice in Startup.cs verrà applicata la migrazione del database all'avvio.

    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
            }
        }
    }



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché