Pregunta

Así que logré ejecutar Code First y funciona muy bien.

Como todavía estoy desarrollando la aplicación, la estructura de la base de datos no está finalizada y por eso necesito implementar migraciones.

Seguí el Publicación oficial del blog y conseguí que funcionara el comando Actualizar-Base de datos.

Sin embargo, esto sólo actualiza la versión SQLExpress de la base de datos.La versión de producción de la base de datos está en Azure y especifico la cadena de conexión en tiempo de ejecución para que el comando Actualizar base de datos no funcione en eso.

Entonces mi pregunta final es:¿Cómo aplico migraciones automáticas a la base de datos de producción cuya cadena de conexión se especifica en tiempo de ejecución?

¿Fue útil?

Solución

En la consola del administrador de paquetes, escriba:

Get-Help Update-Database

Parte relevante:

    Update-Database [-SourceMigration <String>] [-TargetMigration <String>] [-Script] [-Force] [-ProjectName <String>] [-StartUpProjectName <String>] [-ConfigurationTypeName <String>] [-ConnectionStringName <String>] [<Com
monParameters>]

Entonces puedes hacer un Update-Database -ConnectionStringName "MyConnectionString" y debería funcionar a las mil maravillas.

También tienes un MigrateDatabaseToLatestVersion inicializador de base de datos, si lo configura (a través de Database.SetInitializer()), cuando implementa su aplicación en producción con la cadena de conexión adecuada, en el primer acceso a la base de datos debería migrar automáticamente su base de datos a la última versión.

Sin embargo, sugiero precaución y siempre haga una copia de seguridad de las cosas.

Actualizar

Los comentarios recientes de @Alexy Strakh generaron otro argumento que vale la pena incluir en la respuesta.

Configurar correctamente un sistema de implementación utilizando Code First Migrations, dadas 2 ConnectionStrings.

  1. Defina sus cadenas de conexión en web.config (prod y dev), con contraseñas predeterminadas
  2. Haga que el sistema de configuración de su aplicación conozca las configuraciones de conexión de producción y desarrollo, opcionalmente cree pruebas unitarias para garantizar que se elija la correcta*
  3. Emplear transformación del archivo de configuración y haga que transforme su web.config en el que tiene valores de producción
  4. Implemente su paquete en producción (esta debería ser la forma más innovadora)

Se supone que no debes interactuar con el entorno de producción desde tu caja de desarrollo, pero si en realidad necesita hacer eso, luego conviértalo en una solución temporal que debe revertirse tan pronto como haya terminado.

Otra opción es simplemente usar Web.Debug.config y Web.Release.config y tener una plantilla central para el web.config principal (que sería el único que registraría en su control de fuente).

Solo asegúrese de no registrar nunca las contraseñas de producción o de desarrollo personal (si cualquiera).

*Puedes utilizar el símbolo DEBUG para comprobar cómo se está ejecutando la aplicación.

Otros consejos

¿Por qué el EF del marco de entidades?Migration Add-Migration Step requiere una cadena de conexión de base de datos?

tiene una solución que considero menos trabajo intensivo a largo plazo. Como si creara una cadena de conexión con el mismo nombre

en su contexto : Base ("DBNAME")

El nombre de la cadena de conexión y el catálogo inicial coinciden con el nombre de DBNE que especificó y no necesita ingresar el nombre de la cadena de conexión cada vez.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top