Generar script SQL completo a partir de EF 5 Code First Migrations


Respuestas:


287

La API parece haber cambiado (o al menos, no funciona para mí).

Ejecutar lo siguiente en la consola de Package Manager funciona como se esperaba:

Update-Database -Script -SourceMigration:0

14
Me doy cuenta de que esta es la respuesta correcta, pero ¿cómo descubriste que 0 funciona cuando el parámetro es normalmente una cadena?
Dave R

27
Solo prueba y error realmente después de intentar todo lo que se me ocurre para engañarlo para que funcione :)
Matt Wilson

1
¿Esto crea una copia exacta de la base de datos? ¿Incluyendo el contenido de la tabla?
Multitut

2
@Multitut: no, solo hará la estructura.
Martin Clarke

66
Por si acaso alguien está buscando la manera de hacer esto en EfCore y terminó aquí como yo, el comando es: dotnet ef migrations script. Más información sobre la documentación: docs.microsoft.com/en-us/ef/core/managing-schemas/migrations/…
Rafael Miceli

14

Para cualquiera que use el núcleo del marco de la entidad que termine aquí. Así es como lo haces.

# Powershell / Package manager console
Script-Migration

# Cli 
dotnet ef migrations script

Puede usar el parámetro -Fromy -Topara generar un script de actualización para actualizar una base de datos a una versión específica.

Script-Migration -From 20190101011200_Initial-Migration -To 20190101021200_Migration-2

https://docs.microsoft.com/en-us/ef/core/managing-schemas/migrations/#generate-sql-scripts

Hay varias opciones para este comando.

La migración desde debería ser la última migración aplicada a la base de datos antes de ejecutar el script. Si no se han aplicado migraciones, especifique 0(este es el valor predeterminado).

El que la migración es la última migración que se aplicará a la base de datos después de ejecutar la secuencia de comandos. Esto predeterminado es la última migración en su proyecto.

Una secuencia de comandos idempotente se puede generar opcionalmente. Este script solo aplica migraciones si aún no se han aplicado a la base de datos. Esto es útil si no sabe exactamente cuál fue la última migración aplicada a la base de datos o si está implementando en varias bases de datos que pueden estar en una migración diferente.


Esto funciona hasta cierto punto. Una vez que comience a cambiar los nombres de columna, comenzará a arrojar errores, crear un DacPac es una mejor solución. Especialmente cuando comienzas a usar Pipelines en CI / CD
Nick Turner

8

Para agregar a la respuesta de Matt Wilson, tenía un montón de clases de entidad de código primero pero no una base de datos, ya que no había tomado una copia de seguridad. Entonces hice lo siguiente en mi proyecto Entity Framework:

Abra la consola de Package Manager en Visual Studio y escriba lo siguiente:

Enable-Migrations

Add-Migration

Déle a su migración un nombre como 'Inicial' y luego cree la migración. Finalmente escriba lo siguiente:

Update-Database

Update-Database -Script -SourceMigration:0

El comando final creará las tablas de su base de datos a partir de sus clases de entidad (siempre que sus clases de entidad estén bien formadas).

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.