Ich bin neu bei Migrationen und ich kann nicht herausfinden, was zu tun ist, um meine Änderungen in die LiveDB zu bekommen.
Also auf Dev, wenn ich zu meinem Modell hinzufüge ich tue
PM> add-migration <name>
PM> update-database
Aber was mache ich live? Ich hoffte, dass ich einfach veröffentlichen kann \ deploy, um zu leben und die Migration würde laufen und das Schema aktualisieren, aber ich denke nicht :)
Der Live-SQL-Server ist in seiner eigenen Welt ausgeschaltet. Ich habe keinen Zugriff darauf über meine Entwickler-Box, um nur die Verbindungszeichenfolge zu ändern und erneut eine Update-Datenbank zu erstellen.
Was macht ihr, wo ist die Dokumentation?
Danke, Steve
Aktualisiert mit Beispiel für 3.0
Der Core 3.0-Ansatz ähnelt 2.x, jetzt wird jedoch der generische Host verwendet. Sie müssen using Microsoft.Extensions.DependencyInjection;
hinzufügen using Microsoft.Extensions.DependencyInjection;
für das CreateScope()
public static void Main(string[] args)
{
var host = CreateHostBuilder(args).Build();
using (var scope = host.Services.CreateScope())
{
var db = scope.ServiceProvider.GetService<ShortenerContext>();
db.Database.Migrate();
}
host.Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
Mit besserer Möglichkeit für Core 2.0+ aktualisiert
Migrationen sollten in Program.cs ausgeführt werden, da Tools wie die EF Core CLI-Tools die Startfunktionen in normaler Ausführung ausführen.
Hier ist ein Beispiel:
public class Program
{
public static void Main(string[] args)
{
var host = BuildWebHost(args);
using (var scope = host.Services.CreateScope())
{
var db = scope.ServiceProvider.GetService<ShortenerContext>();
db.Database.Migrate();
}
host.Run();
}
public static IWebHost BuildWebHost(string[] args)
{
return WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.Build();
}
}
Eine Möglichkeit, Migrationen in 1.x auszuführen, besteht darin, beim Start der App einfach Folgendes hinzuzufügen:
public void Configure(
IApplicationBuilder app,
IHostingEnvironment env,
ILoggerFactory loggerFactory,
ShortenerContext db)
{
db.Database.Migrate();
//Rest omitted
}
Dadurch werden alle ausstehenden Migrationen für die Datenbank beim Start ausgeführt.
script-migration -From "last_migration_name" -To "current_migration_name"
oder von script-migration -idempotent