2012-02-25 13 views
32

Así que he logrado ejecutar Code First y funciona de maravilla.Codifique la primera migración con cadenas de conexión

Como todavía estoy desarrollando la aplicación, la estructura de la base de datos no está finalizada, por lo que debo implementar las migraciones.

Seguí el Official Blog Post y conseguí que el comando Update-Database funcionara.

Sin embargo, esto solo 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, por lo que el comando Actualizar-Base de datos no funciona en eso.

Así que mi última pregunta es: ¿cómo puedo aplicar las migraciones automáticas a la base de datos de producción cuya cadena de conexión se especifica en el tiempo de ejecución?

+0

Para aquellos que verifican NO con app.config y no usan la consola de PM, consulte esta publicación http://stackoverflow.com/questions/15504465/entityframework-code-first-custom-connection-string-and-migrations/16133150# 16133150 –

Respuesta

49

En el paquete tipo de consola de administrador:

Get-Help Update-Database

parte pertinente:

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

para que pueda hacer un Update-Database -ConnectionStringName "MyConnectionString" y debería funcionar como un encanto.

También tiene un inicializador de base de datos MigrateDatabaseToLatestVersion, si lo configura (mediante Dabase.SetInitializer()), al implementar su aplicación en producción con la cadena de conexión adecuada, en el acceso de frist db debe migrar automágicamente su base de datos a la última versión.

Sugiero precaución, siempre copias de seguridad de las cosas.

actualización

comentarios @Alexy Strakh recientes generaron otro argumento vale la pena poner en la respuesta.

Configuración adecuada de un sistema de implementación utilizando Code First Migrations, con el número 2 ConnectionString s.

  1. Definir sus cadenas de conexión en web.config (prod y dev), con contraseñas por defecto
  2. tiene el sistema de configuración de la aplicación sabe acerca de las configuraciones de conexión y prod dev, opcionalmente construir pruebas unitarias para asegurar la correcta es captada *
  3. Emplear config file transformation y tiene que transformar su web.config en el que tiene valores de producción
  4. de implementar el paquete a la producción (this should be the most cutting edge way)

Se supone que no debe interactuar con el entorno de producción desde su cuadro de desarrollo, pero si realmente necesita , 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 ingrese en su control de origen).

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

* Puede usar el símbolo DEBUG para verificar cómo se está ejecutando la aplicación.

+0

Tengo una base de datos de desarrollo especificada en mi conexión predeterminada web.config y prod db especificada en web.release.config. Quiero usar prod en lugar de dev, ¿puedo hacer eso? –

+0

Sí, de todos modos, pero recuerde que NO es responsabilidad de la infraestructura de la entidad (o de cualquier tecnología de almacenamiento) tener en cuenta su lógica de configuración para el desarrollo/puesta en escena/producción. Creo que lo que necesitas es transformación de archivos de configuración. https://msdn.microsoft.com/en-us/library/dd465318%28v=vs.100%29.aspx – WDRust

+0

Eso es, suponiendo que quieras ir por esa ruta. Si tiene detalles o requisitos adicionales, debe hacer otra pregunta (no dude en enviarme un mensaje de ping) – WDRust

Cuestiones relacionadas