code first migrations

8
INTRODUCCIÓN Code first migrations básicamente nos da soporte para realizar actualizaciones de nuestra base de datos. ¿Y qué podemos actualizar?, pues básicamente podremos crear, renombrar y borrar tanto tablas como columnas, así como crear índices, claves ajenas o incluso ejecutar sentencias SQL para actualizar registros, Code First se considera la alternativa más adecuada para aquellos casos en los que hay que crear la base de datos desde cero en conjunto con la aplicación, y es el equipo de desarrollo quien debe hacerlo. Usando Code First literalmente no deberemos escribir una sola sentencia SQL .

Upload: joslui-juan-de-dios

Post on 09-Dec-2015

9 views

Category:

Documents


0 download

DESCRIPTION

tema relacionado al code first

TRANSCRIPT

Page 1: Code First Migrations

INTRODUCCIÓN

Code first migrations básicamente nos da soporte para realizar actualizaciones de

nuestra base de datos. ¿Y qué podemos actualizar?, pues básicamente podremos

crear, renombrar y borrar tanto tablas como columnas, así como crear índices, claves

ajenas o incluso ejecutar sentencias SQL para actualizar registros, Code First se

considera la alternativa más adecuada para aquellos casos en los que hay que crear la

base de datos desde cero en conjunto con la aplicación, y es el equipo de desarrollo

quien debe hacerlo. Usando Code First literalmente no deberemos escribir una sola

sentencia SQL .

Page 2: Code First Migrations

CODE FIRST MIGRATIONS

EL CONCEPTO DE MIGRACIÓN

Cada vez que realizamos un cambio en nuestro modelo de base de datos, deberíamos generar un script que refleje los cambios realizados en la base de datos. Además, para poder llevar un control de los cambios, de igual modo que hacemos con el código, deberíamos anotar en la base de datos la revisión de la misma. De esta forma podemos saber en todo momento, en que versión se encuentra cada base de datos de cada uno de los entornos que dispongamos y aplicar sólo los cambios necesarios.

Cada script de cambios y su número de revisión correspondiente, conforman una migración. Y para ser correctos del todo, deberíamos de incluir también la opción de deshacer cada uno de nuestros cambios en la misma, en caso de que algo no fuera tal y como queremos.

Por tanto, escribir un script de migracinó que gestione el versionado automáticamente y permita incrementar o reducir el número de revisión fácilmente, puede resultar una tarea compleja si la hacemos solo con SQL. Por ello podemos apoyarnos en frameworks que nos faciliten la vida un poco.

NUESTRA PRIMERA MIGRACIÓN CON ENTITY FRAMEWORK

Lo primero que necesitamos es el modelo, para ello definimos par clases:

Figura 01 FUENTE HTTP://WWW.JULITOGTU.COM/2014/12/22/ENTITY-FRAMEWORK-CREAR-LA-BASE-DE-DATOS-CON-CODE-FIRST-MIGRATIONS/

Page 3: Code First Migrations

Como siguiente paso, creamos el contexto para trabajar con Entity Framework y relacionamos las dos clases anteriores:

Figura 02 FUENTE HTTP://WWW.JULITOGTU.COM/2014/12/22/ENTITY-FRAMEWORK-CREAR-LA-BASE-DE-DATOS-CON-CODE-FIRST-MIGRATIONS/

Luego de definir las clases, accedemos a la consola de Nuget y habilitamos el uso de Migrations con el comando enable-migrations:

Figura 03 FUENTE HTTP://WWW.JULITOGTU.COM/2014/12/22/ENTITY-FRAMEWORK-CREAR-LA-BASE-DE-DATOS-CON-CODE-FIRST-MIGRATIONS/

Una vez finalizada la ejecución del comando, vamos a encontrar una nueva carpeta en el proyecto con el nombre Migrations, que tiene una clase llamada Configuration.cs en donde es posible modificar el comportamiento normal de las migraciones:

Figura 04 FUENTE HTTP://WWW.JULITOGTU.COM/2014/12/22/ENTITY-FRAMEWORK-CREAR-LA-BASE-DE-DATOS-CON-CODE-FIRST-MIGRATIONS/

Page 4: Code First Migrations

Como ya tenemos listo el modelo de clases, vamos a crear la primera migración, para ello volvemos a la consola de Nuget y ejecutamos add-migration Initial, donde Initial es el nombre de la migración:

Figura 05 FUENTE HTTP://WWW.JULITOGTU.COM/2014/12/22/ENTITY-FRAMEWORK-CREAR-LA-BASE-DE-DATOS-CON-CODE-FIRST-MIGRATIONS/

Dicha migración la vamos a encontrar en la carpeta Migrations:

Figura 06 FUENTE HTTP://WWW.JULITOGTU.COM/2014/12/22/ENTITY-FRAMEWORK-CREAR-LA-BASE-DE-DATOS-CON-CODE-FIRST-MIGRATIONS/

La clase generada tienes dos métodos, Up para hacer la creación de los objetos y Down para eliminarlos:

Page 5: Code First Migrations

Figura 07 FUENTE HTTP://WWW.JULITOGTU.COM/2014/12/22/ENTITY-FRAMEWORK-CREAR-LA-BASE-DE-DATOS-CON-CODE-FIRST-MIGRATIONS/

Pero antes de ejecutar la migración, vamos a ir a la clase Configuration.cs y en el método Seed el cual es llamado luego de que se ejecuta la migración vamos a definir unos datos iniciales:

Figura 08 FUENTE HTTP://WWW.JULITOGTU.COM/2014/12/22/ENTITY-FRAMEWORK-CREAR-LA-BASE-DE-DATOS-CON-CODE-FIRST-MIGRATIONS/

Y finalmente para ejecutar la migración en la consola de Nuget ejecutamos update-database:

Page 6: Code First Migrations

Figura 09 FUENTE HTTP://WWW.JULITOGTU.COM/2014/12/22/ENTITY-FRAMEWORK-CREAR-LA-BASE-DE-DATOS-CON-CODE-FIRST-MIGRATIONS/

Y listo, ya tenemos disponible la base datos:

Figura 10 FUENTE HTTP://WWW.JULITOGTU.COM/2014/12/22/ENTITY-FRAMEWORK-CREAR-LA-BASE-DE-DATOS-CON-CODE-FIRST-MIGRATIONS/

CONCLUSIÓN

Page 7: Code First Migrations

Podemos decir que para los desarrolladores CodeFirst es una gran alternativa, ya que podemos definir todas las clases de dominio desde el código de nuestra aplicación, e incluso personalizar y definir ciertas situaciones particulares que requieran una resolución particular en la base de datos. La utilización de migraciones marca una diferencia muy importante con ModelFirst, ya que con esta última solo se nos generaba el código SQL de todo el modelo, sin tener en cuenta si ya había estructuras creadas y su estado.