2012-06-30 13 views
9

Estamos utilizando EF 5RC, primero el código con migraciones. Siento que esta debería ser una pregunta fácil de responder (espero). ¿Hay alguna forma de averiguar qué está intentando hacer la migración automática?Estrategia para obtener SQL para AutomaticMigrations

Agregué una migración a través del comando Agregar-Migración PS. He invocado la base de datos de actualización y todo parece estar bien con esa migración. Ahora - Estoy ejecutando Actualización de base de datos-como hago normalmente, pero con el siguiente error:

PM> update-database -Verbose 
Using StartUp project 'Web'. 
Using NuGet project 'DataAccess'. 
Specify the '-Verbose' flag to view the SQL statements being applied to the target database. 
Target database is: 'UserGroup' (DataSource: (localdb)\v11.0, Provider: System.Data.SqlClient, Origin: Configuration). 
No pending code-based migrations. 
Applying automatic migration: 201206301526422_AutomaticMigration. 
Automatic migration was not applied because it would result in data loss. 

Aviso, estoy añadiendo la opción -Verbose, y he tratado de nuevo con el - Guión. Pero no tengo idea de a qué estamos migrando; y qué SQL - o lo que piensa dará como resultado la pérdida de datos.

No quiero simplemente habilitar "permitir la pérdida de datos" aquí, pero estoy tratando de entender cómo solucionar estas migraciones.

¡Gracias de antemano!

Respuesta

18

Sólo tiene que ejecutar:

PM> Update-Database -Script -Force 

Esto generará el SQL y mostrarlo en una ventana sin ejecutarlo.

+0

Si habilito permitiendo la pérdida de datos, puede borra todas mis filas? Agregué el atributo 'MaxLength' a una columna, sé que ninguna de las filas en la base de datos en realidad excede esa longitud, si es así, no me importa que se trunque. Entonces, ¿esto es lo que significa la pérdida de datos, o eliminará literalmente todas las filas de DB? – Shimmy

+2

@Shimmy no borrará sus filas. –

+0

Pero puede disminuir o acortar las columnas –

9

Tengo este error en Azure después de una publicación, pero no puedo utilizar u -Force, solución tan global (y sin necesidad de -Force a nivel local también)

public Configuration() 
{ 
    AutomaticMigrationsEnabled = true; 
    AutomaticMigrationDataLossAllowed = true; // <-- THIS LINE 
} 
+0

solo para agregar esto va dentro del constructor de la clase de configuración, que hereda de DbMigrationsConfiguration http://msdn.microsoft.com/en-us/library/hh829093(v=vs.103) .aspx –

+0

Gracias, me quedé atrapado en el número de publicación de publicación de Azure –

+1

Bastante peligroso para permitir la pérdida de datos a través de una migración en un entorno de producción. –

Cuestiones relacionadas