EF vNext- Migrations 0.7.0.0

Las dos últimas entradas de este blog trataban sobre una de las novedades ( una de las importantes ) que traerá la próxima version de EF llamada Migrations. Ayer mismo, sacaron de forma publica una nueva revisión ( aún en version alfa, 0.7.0.0)  que presenta algunas novedades interesantes que me gustaría comentar aquí. Lógicmente no volveremos a hacer los walkthrough de los post anteriores ( por supuesto puede también revisar el blog del grupo de ADO.NET con sus propias guias), sino que solamente vermos algunas de las novedades introducidas.

Puerta de entrada para introducir datos con la migración

Lo primero que llama la atención con esta nueva versión es que la clase Settings, creada automáticamente cuando se agrega el paquete de migraciones, además de las opciones anteriores para establecer los generadores a utilizar nos proporciona un método para realizar un Seed de los datos.

 

Este método Seed se ejecuta automáticamente cada vez que se hace una migración a la ultima versión. Bueno, aunque esto, aún parece que esta pillado con pinzas, sobre todo porque habría que discutir como afectan las migraciones hacia atrás con respecto a los datos etc… Es decir, parece que con todo lo que tenga que ver con Data Motion aún hay mucho por jugar. Veremos en las siguientes versiones que cariz toma esto.

 

Update-Database –Verbose

El nuevo flag –Verbose nos permite ver en nuestro Package Manager la información del SQL a generar para realizar la actualización de la base de datos después de una migración. Así por ejemplo si ejecutamos este comando podríamos ver cosas como las que podemos observar en la figura de la derecha.Untitled

 

Downgrades

 

En esta versión ya empezamos a tener la posibilidad de deshacer migraciones o situarnos en alguna migración en concreto, algo que ellos llaman downgrades. Supongamos que estamos trabajando con este paquete y realizamos por ejemplo dos migraciones. La inicial de nuestro proyecto, First, y después una llamada AddNotesProperty. Pues bien, esta segunda migración nos generaría un código como podría ser el siguiente:

 

En este pequeño fragmento podemos ver como tenemos un método para “deshacer” la migración, en nuestro casi algo tan simple como eliminar la columna previamente creada en la tabla Customers. Ahora,

si quisiéramos movernos por ejemplo a la versión inicial de la base de datos podríamos ejecutar el siguiente comando: Update-Database –TargetMigration:First.  Esto es realmente importante si por ejemplo nos queremos mover a una versión de código determinada y tenemos una base de datos por ejemplo posterior. Gracias a que todas las migraciones las tenemos disponibles como código dentro de la carpeta Migrations podemos realizar esta tarea sin dificultad ninguna.El flag –TargetMigration tiene un argumento especial que es 0 y nos permite movernos directamente a la primera migración.

 

Untitled2

 

 

 

Notas:

Aunque en esta versión han arreglado la dependencia con SqlExpress, no se podía utilizar el paquete de migraciones sino se  disponia de una instancia con nombre .SQLEXPRESS ( o en su defecto un alias) aún hay cosas que serían deseables y que no están. Como por ejemplo la posibilidad de usar toda la artillería de migraciones fuera de Visual Studio o el uso de Data Motion.

 

Saludos

Unai

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *