Introducción
Este sera el primero de 4 artículos en el que trataremos el desarrollo en capas en .net usando Entity Framework.
Aspectos a considerar
Se usara Visual Studio 2010 y Sql Express 2008.
Se realizara con los lenguajes de C# y VB.Net.(pero solo se explicara con c#)
Se usara la versión 4.1 de Entity Framework
Se usara un generador de plantillas T4.En este primer articulo veremos como generar nuestro modelo de datos .edmx de entity framework y veremos como usar DbContext Generator para generar nuestro contexto y clases poco de nuestro modelo. Cual es la finalidad de esto separa las entidades de la persistencia para poder usar estas en otras capas. Para hacer esto necesitaremos la versión
ADO.NET Entity Framework 4.1 tambien necesitaremos el generador de plantillas para c#
EF 4.x DbContext Generator for C# o para vb.net
EF 4.x DbContext Generator for VB.NETLo que aremos a lo largo de todo el ejemplo sera dividir el proyecto en capas para poder notar todas las ventajas que esto aporta entre ellas reutilización de código, mejor mantenimiento de la aplicación, separación de responsabilidades etc.
La siguiente imagen muestra la estructura que tendrá nuestro proyecto final y la comunicación que abra entre las diferentes capas.
Para todo el ejemplo usare una base de datos llamada
Estudiantes que tiene el siguiente diseño.
Lo primero sera crear un proyecto en blanco y agregar una biblioteca de clases llamada
DataAcces.
Ahora vamos a generar el modelo de nuestra base de datos para eso agregamos un nuevo elemento y elegimos
ADO.NET Entity Data Model.Elegimos generar desde la base de datos.
Especificamos la cadena de conexión hacia la base de datos.
Ahora seleccionamos los objetos de la base de datos que queremos modelar en este caso seleccionamos las 3 tablas.
Con esto tendremos nuestro modelo de la base de datos.
Ahora vamos a generar nuestras clases poco haciendo uso del generador de
DbContext. Para esto hacemos clic derecho en un espacio en blanco del modelo y elegimos Agregar elemento de generación de código.
Elegimos
ADO.NET DbContext Generator(tienen que haberlo instalado antes).
Si aparece un cuadro de advertencia eligen no mostrar este mensaje de nuevo y aceptar. Esto agregara 2 plantillas(cuyos nombres terminan en .tt) a su proyecto.
La plantilla
Students.Context.tt creó una clase DbContext conteniendo las colecciones de entidades y la plantilla
Students.tt creó clases separadas para cada tabla.
Para que el modelo DbContext funcione necesita de la version 4.1 de entity framework(tienen que instalarlo) así que agregaremos la dll para eso agregamos una referencia al proyecto y buscamos la dll en la ruta que se instalo que por lo general es
C:Archivos de programaMicrosoft ADO.NET Entity Framework 4.1Binaries Ahora lo que aremos es mover la plantilla
Students.tt la que contiene las clases de cada tabla a otro proyecto biblioteca de clases en este caso llamado
Entities.Para que esta plantilla funcione ahora que lo hemos movido a una proyecto nuevo tendremos que configurar la linea que apunta hacia el modelo EDMX para eso damos doble clic en la platilla
Students.tt y cambiamos la ruta de string InputFile para que apunte hacia el modelo EDMX que se encuentra en el proyecto DataAcces.
Ahora cambiaremos el espacio de nombres de la platilla
Students.Context.tt ya que las clases entidades las movimos hacia el proyecto Entities tenemos que modificar el espacio de nombres de la plantilla
Students.Context.tt para esto abrimos la ventana de propiedades de la plantilla y establecemos el espacio de nombres en
Entities. Por ultimo lo que tenemos que hacer es agregar una referencia del proyecto
Entities en el proyecto
DataAcces. Nota: En el caso del proyecto vb.net en la clase de la platilla
Students.Context.vb es necesario agregar un
Imports Entities para que el contexto reconozca las clases entidad.
Con esto terminamos la primera parte de nuestro Proyecto. Lo que hemos hecho es crear el modelo de nuestra base de datos y también hemos generado el contexto y las clases entidad del modelo y también hemos separado las clases entidad en un proyecto aparte para poder usar estas clases en las demás capas, ya que como lo dije al principio la finalidad de todos esto es separar las entidades de la persistencia.
Si quieren descargar los proyectos de esta primera parte tanto en c# como en vb.net los encontraran en mi blog.
Desarrollo en Capas Entity Framework(Parte 1) También en mi blog pueden ver las partes 2 y 3 del ejemplo.Desarrollo en Capas .Net (Parte 2) - Capa de DatosDesarrollo en Capas .Net (Parte 3) - Capa de NegocioLa parte final(capa presentación) la publicare la otra semana en mi blog asi que si les intereso esten pendientes.
Saludos