EF Migrations, EF 4.3 y que nos deparará el futuro

Hoy mismo se ha hecho pública la primera beta del paquete de “migraciones” que el equipo de Entity Framework ha estado preparando durante ya hace algún tiempo, de hecho, en este mismo blog ya hemos publicado unas cuantras entradas,aquí y aquí, referidas a su funcionamiento. Lo más destacable de este anuncio, a mayores de los cambios y novedades en el paquete, comentaremos sobre esto más adelante, es el hecho de que incorporarán Migrations como parte de EF 4.3, es decir, que ya no existirá el paquete EntityFramework.Migrations como tal. Desde mi punto de vista, esto es sin duda una gran idea, puesto que el trabajo con migraciones no es “algo opcional” en un proyecto real.  Hablando con un miembro del equipo sobre cuales serían las implicaciones directas de este paso se puso sobre la mesa la posibilidad de que alguna funcionalidad estuviera duplicada entre el code base de EF Code First y el paquete de migraciones. Un ejemplo de esto, podría ser por ejemplo los inicializadores de EF, IDatabaseInitializer<T> cuya funcionalidad podría solaparse con el Seed que podemos hacer en nuestro DbMigrationsConfiguration, aunque en mi opinión ambos podrian tener propósitos diferentes. Lo más interesante de este movimiento, es lo que se puede leer por detrás, es decir, como poco a poco el equipo de EF está haciendo movimientos para apartarse de la dependencia de .NET Framework, dependencia que seguro que afecta enormemente a su ciclo de vida, a su capacidad de entrega y a la resolución de problema de una forma más agil. Seguro, que no dentro de mucho, nos darán alguna sorpresa en cuanto al ciclo de vida y modelo de desarrollo con respecto a EF.

 

Bueno, al chollo:

Realmente, el funcionamiento de esta beta es bastantet similar, de hecho ya advierte de que hay unas pequeñas features y sobre todo refactoring. Lo primero en lo que nos podemos fijar con respecto a las versiones anteriores es que ahora la clase DbMigrationContext de las versiones anteriores se sustituye por DbMigrationsConfiguration:

 

Por supuesto, aunque ahora no se muestren, esta clase nos sigue ofreciendo la posibilidad de establecer las generadores de código SQL y codigo C# de las migraciones que hagamos, además de otra serie de flags, como por ejemplo AutomaticMigrationDataLossAlowed, que nos permitirán modificar algún comportamiento adicional. Otro elemento a mayores, es ver como han creado un nuevo método extensor, AddOrUpdate que nos simplificará el Seed de los datos.

Al igual que hacíamos antes, también podemos hacer customizaciones en las distintas migraciones, así, por ejemplo, si nos interesará poder un índice sobre la columna FirstName de nuestra tabla authors podríamos hacer alog como lo siguiente: 

A mayores de los métodos de customización de DbMigration, base para todas las definiciones de migración, esta nos ofrece un método llamado Sql que nos servirá para ejecutar, en el caso de necesitarlo, un comando SQL, como por ejemplo un  UPDATE para poner un valor por defecto a una de las nuevas columnas, etc.

Bueno, aquí se queda esto por ahora… Para los que os guste el tema y aún no hayais podido profundizar os recomienod los recomiendo las guias paso a paso del equipo de Entity Framework que están aquí y aquí.

 

Nos despedimos hasta la próxima dónde empezaremos una serie sobre RavenDB.

 

Un saludo

Unai

5 comentarios en “EF Migrations, EF 4.3 y que nos deparará el futuro”

  1. Hola Unai:

    Da la sensación de que falta algo en el artículo, por el párrafo que empieza “mayores,” y por el “Podríamos pensar…” que no se concluye. ¿Es posible?

  2. Gracias Pablo, efectivamente, parece que el live writer se ha comido alguna cosa, a ver si puedo revisarlo online… revisaré también los que estan en draft no vaya a ser…

    Unai

Deja un comentario

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