Estoy tratando de crear un sitio web simple usando asp.net vnext y EF 7.0. Para el desarrollo utilizo localDB y las migraciones funcionan bien. Luego implemento mi sitio en Azure y deseo aplicar migraciones a Azure SQL Server.
¿Hay alguna forma de aplicar migraciones a la base de datos de producción, o cómo cambiar dinámicamente la cadena de conexión para las migraciones?
No quiero cambiar la cadena de conexión cada vez que aplico migraciones.
Hay 3 formas de aplicar las migraciones.
Programáticamente (desactualizado: ver actualización a continuación)
context.Database.ApplyMigrations()
Desde la línea de comandos. Esto es realmente para los desarrolladores que administran sus bases de datos locales, no servidores remotos. Como observó, ejecutar contra Azure requeriría que su proyecto local contenga una cadena de conexión a Azure.
Producir y ejecutar manualmente un script.
$ dnx ef migrations script
(o)
PM> Script-Migration
Los argumentos para estos comandos (y los comandos exactos) aún no están establecidos al 100%. No hay documentación oficial sobre migraciones. Mientras tanto, este documento de diseño muestra los comandos planificados para las migraciones.
ACTUALIZAR
La API es ahora
context.Database.Migrate()
El código siguiente en Startup.cs
aplicará la migración de la base de datos en el inicio.
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
}
}
}