miércoles, 4 de diciembre de 2013

[EntityFramework] Iniciando con Data Base First

En el artículo anterior Enfoques en EntityFramework observamos que enfoques o que flujos podemos seguir para trabajar con EF, ahora vamos a hacer doble clic sobre cada uno de los enfoques para ver más en detalle cada uno de ellos, en primera instancia vamos a iniciar con Data Base First, que como había mencionado nos permite generar automáticamente nuestro modelo y nuestras clases Poco, teniendo como punto de referencia una base de datos previamente creada. Pues veamos cómo podemos lograr esto:

Para nuestro ejemplo vamos a trabajar con la famosa base de datos Northwnd, de la cual comparto un .bk para que puedan seguir paso a paso la demo:

Northwnd DB

Una vez restauremos la base de datos, generamos nuestro EntityDataModel, que generará nuestro modelo conceptual y las clases poco que estarán mapeadas a él, para esto seguimos los siguientes pasos:

  1. En nuestro proyecto que puede ser una librería de clases, sitio web, consola, etc. Oprimimos clic derecho y elegimos la opción agregar nuevo elemento, posteriormente filtramos los tipos de elementos por datos y por ultimo elegimos ADO.NET Entity Data Model y hacemos clic sobre el botón agregar, no sin antes darle un nombre a nuestro modelo:





  2. Posteriormente nos muestra dos opciones, la primera para generar desde una base de datos existente y la otra para crear un modelo en blanco, en nuestro caso seleccionamos la primera para crear desde nuestra DB Northwnd:


  3. Ahora debemos especificar los datos de conexión a nuestra base de datos, para esto hacemos clic en el botón "Nueva conexión", luego vemos como se genera una cadena de conexión y podemos elegir si mostrarla en el archivo de configuración de nuestro proyecto o no:





  4. Una vez lista nuestra conexión podemos elegir que versión de EntityFramework vamos a usar, para nuestro ejemplo usaremos la versión 6 que es la última versión recientemente liberada:


  5. Y para finalizar, debemos elegir los elementos de nuestra base de datos que queremos que sean incluidos en nuestro modelo:

Y nuestro resultado final es el modelo que visualizamos de inmediato, con sus respectivas relaciones, procedimientos almacenados y funciones si es que los seleccionamos para incluir, todo esto representado en un archivo con extensión .edmx, el cual si exploramos bien contiene el diagrama y además todas las clases auto generadas que corresponden a las tablas en nuestras base de datos:


Bueno amigos eso es todo por esta ocasión. Con esto damos inicio a EntityFramework DB First, en próximos artículos profundizaremos más acerca de este modelo que generamos y como interactuar con el para el acceso a datos de nuestras aplicaciones, espero les sea de utilidad.

Buena suerte! y saludos.

6 comentarios:

  1. Interesante articulo para entrar el el mundo de ASP MVC

    ResponderEliminar
    Respuestas
    1. Hola beto, así es, el uso de EntityFramework para persistencia y acceso a datos es una gran opción si vamos a trabajar con asp.net MVC, nos ofrece demasiadas ventajas, además en cualquier tipo de aplicación es una excelente alternartiva, Saludos!

      Eliminar
  2. Muchas gracias por tu blog, apenas entro y me parece muy completo.

    Me gustaría preguntarte si tienen ejemplos para los otros dos enfoques de EF, tal y como lo hiciste con
    [EntityFramew'ork] Iniciando con Data Base First

    Saludos
    Santiago R

    ResponderEliminar
    Respuestas
    1. Hola Santiago muchas gracias por tu comentario, sí, tengo tutoriales para el enfoque CodeFirst, en el siguiente enlace puedes encontrar todos los artículos que he escrito sobre este enfoque de EF:
      http://www.eltavo.net/search/label/CodeFirst
      Si haces click en el link entradas antiguas al final de la página podrás ver todos los artículos, espero te sean de utilidad.

      Eliminar
    2. Gracias Tavo.. Excelente la documentación
      Aprovecho para preguntarte una cosa. El enfoque de CodeFirst podría aplicarse también sobre una base de datos existente?, se que para eso se debería aplicarse el enfoque DataBaseFirst, pero me da la sensación que CodeFirst es más "limpio", te hago la pregunta ya que no se si los enfoques pueden aplicarse estrictamente.
      Saludos
      Santiago R

      Eliminar
    3. Hola Santiago, de acuerdo contigo, CodeFirst es mucho más limpio, al no tener clases autogeneradas, y pues por lo tanto no es necesario el uso de clases parciales y clases de metadata para customizar ciertas cosas, y sí es posible usar CodeFirst cuando tenemos una base de datos existente, observa este artículo donde hablo de los 4 enfoques de EF, el último es el que necesitas (CodeFirst From DataBase) y fue una actualización que realicé hace poco a ese artículo, cuando se creó este nuevo enfoque.
      http://www.eltavo.net/2013/11/entityframework-db-first-model-first-o.html
      Espero te sea de utilidad.
      Saludos!

      Eliminar