Pregunta

Durante el desarrollo, me gusta la idea de los marcos como el marco de entidades 4.3 Migraciones (aunque necesito que trabaje con scripts SQL en lugar de clases de migración) manteniendo todas las bases de datos de desarrolladores actualizadas. Alguien hace una actualización para obtener la última fuente, intentan ejecutar la solicitud y obtener un error que necesitan para actualizar su base de datos a la migración más reciente (o la migración ocurre automáticamente). Los archivos de migración están marcados de tiempo, por lo que no tiene que preocuparse por nombrar dos archivos de la misma manera o la secuencia en que deben ejecutarse los archivos.

Cuando me prepare para construir un paquete de implementación de WebDeploy, quiero que el paquete contenga los scripts requeridos para mover la base de datos de producción a la última versión de DB. Por lo tanto, de alguna manera, Msbuild o WebDeploy deben tomar una decisión sobre qué scripts deben ser envasados. Para la implementación, no quiero que la aplicación intente actualizarse como lo que ofrece EF. Quiero entregar el paquete al departamento de TI o hacer una implementación automática a través de un servidor de implementación.

Algunas de mis preguntas son:

  1. ¿Puede EF 4.3 trabajar con scripts de SQL en lugar de clases de dbmigration para mis necesidades de desarrollo (ya lo estoy usando para mi ORM, por lo que sería bueno si pudiera)?

  2. ¿Msbuild o WebDeploy comprende el concepto de migraciones de la base de datos (por ejemplo, reconoce la tabla EF. 4.3 Migrationhistory) o tengo que asegurarme de darle solo los scripts que necesita para ejecutarlo traerá mi producto DB a la última migración? Decidir manualmente a qué scripts debe ser pakaged no es algo que quiera hacerlo, ¿hay una extensión de MS WebDeploy que entienda las migraciones?

  3. ¿Son mis preocupaciones e ideas válidas? Solo estoy investigando esto, así que realmente no lo sé.

¿Fue útil?

Solución

Creo que sus inquietudes son válidas.Durante el desarrollo, cualquier cosa que mantenga las máquinas de desarrollador en sincronización.Al desplegar, se necesita más control.

En mi proyecto, hemos decidido utilizar solo las migraciones basadas en el código, para garantizar que todas las bases de datos se migren en el mismo orden con los mismos pasos.La creación automática de migración y DB está deshabilitada por una estrategia de inicialización personalizada que solo verifica que existe la DB y es válida.

He escrito más sobre los detalles en Evita que las migraciones de EF creen o cambien la base de datos .También me he visto un poco en Combinar conflictos que eventualmente ocurrirá con múltiples desarrolladores.

Otros consejos

  1. Puede ejecutar SQL en las clases llamando al método SQL, o generar SQL de una migración utilizando el parámetro -Script con el comando de actualización-base de datos.

  2. no.Estaban mirando a agregar soporte para WebDeploy, pero aparentemente decidieron contra ella antes de RTM.Sin embargo, soltaron una aplicación de línea de comandos (y la script de PowerShell, obviamente), a la que podría llamar desde cualquiera.

    Lo que hago en Mis proyectos es crear un módulo de inicio en mis aplicaciones y ejecute cualquier migración que no se haya implementado automáticamente, activar la migración de EF en la puesta en marcha de la aplicación por código .No es perfecto, los desarrolladores tienen que ejecutar la aplicación después de obtener más tarde antes de cambiar el DB, pero funciona tanto para obtener más y despliegue.

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