EntityFramework 7, migraciones y ConnectionString

c# entity-framework-core

Pregunta

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.

Respuesta aceptada

Hay 3 formas de aplicar las migraciones.

  1. Programáticamente (desactualizado: ver actualización a continuación)

    context.Database.ApplyMigrations()
    
  2. 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.

  3. Producir y ejecutar manualmente un script.

    context.Database.ApplyMigrations()
    

    (o)

    context.Database.ApplyMigrations()
    

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.ApplyMigrations()

Respuesta popular

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



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué