2016-09-30 3 views
2

Ich bin neu bei Migrationen und kann nicht herausfinden, was zu tun ist, um meine Änderungen in die LiveDB zu übertragen.So führen Sie eine Migration in der Produktion aus

Also auf dev wenn ich zu meinem Modell hinzufügen ich

PM> add-migration <name> 
PM> update-database 

Aber was soll ich tun, auf Live? Ich hoffte, ich könnte einfach veröffentlichen \ deploy, um zu leben und die Migration würde laufen und das Schema aktualisieren, aber ich denke nicht :)

Der Live-SQL-Server ist in einer eigenen Welt Ich habe keinen Zugriff darauf von meinem Dev-Box, um nur die Connectionstring zu ändern und erneut eine Update-Datenbank zu erstellen.

Was machst du, wo ist die Dokumentation?

Danke, Steve

+2

Sie können [Skript erstellen] (https://docs.efproject.net/en/latest/miscellaneous/cli/powershell.html#script-migration) für die Migration erstellen. – Jasen

+0

Das war es, thx Herr! Ich wünschte, ich könnte Ihnen das als Antwort geben ... –

Antwort

5

für Core-2.0+ in der normalen Ausführung

Migrationen sollte wie die EF Core-CLI-Tools aufgrund Werkzeuge in Program.cs laufen laufen die Startfunktionen mit einer besseren Art und Weise aktualisiert. Hier

ein Beispiel:

public class Program 
{ 
    public static void Main(string[] args) 
    { 
     BuildWebHost(args).Run(); 
    } 

    public static IWebHost BuildWebHost(string[] args) 
    { 
     var host = WebHost.CreateDefaultBuilder(args) 
      .UseStartup<Startup>() 
      .Build(); 

    using (var scope = host.Services.CreateScope()) 
    { 
     var db = scope.ServiceProvider.GetService<ShortenerContext>(); 
     db.Database.Migrate(); 
    } 

    return host; 
    } 
} 

Eine Möglichkeit, Migrationen in 1.x zu laufen ist nur so etwas wie dies in app Start hinzufügen:

public void Configure(
      IApplicationBuilder app, 
      IHostingEnvironment env, 
      ILoggerFactory loggerFactory, 
      ShortenerContext db) 
{ 
    db.Database.Migrate(); 
    //Rest omitted 
} 

Dies wird ausgeführt, alle Ausstehende Migrationen gegen die Datenbank beim Start.

+0

löst einen Db Verbindungsfehler, wenn ich es in konfigurieren, arbeitet sie für Sie? –

+0

Ja, es funktioniert, das Problem ist entweder Ihre Verbindungszeichenfolge oder es kann keine Verbindung aus anderen Gründen hergestellt werden. – juunas

5

Dank https://stackoverflow.com/users/2030565/jasen für die Antwort

  1. überprüfen Live-DB-Tabelle "__EFMigrationsHistory" für letzten Lauf Migration
  2. PM> Skript-Migration -Von "last_migration_name" -Zur "current_migration_name"
  3. Skript wird generiert, läuft unter
+0

Sie können auch 'Script-Migration -Idempotent' verwenden und sich nicht darum kümmern, was die letzte Laufmigration ist. – bricelam

+0

Dies ist die bessere Antwort, da der Datenbankbenutzer nicht berechtigt ist, das Schema zu ändern. –

Verwandte Themen