Desarrollo en Capas .Net (Parte 1)

viernes, 12 de octubre de 2012

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.NET

Lo 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.

Estructura


Para todo el ejemplo usare una base de datos llamada Estudiantes que tiene el siguiente diseño.

Base datos 

Lo primero sera crear un proyecto en blanco y agregar una biblioteca de clases llamada DataAcces.


Data Acces


Ahora vamos a generar  el modelo de nuestra base de datos para eso agregamos un nuevo elemento y elegimos ADO.NET Entity Data Model.

Modelo

Elegimos generar desde la base de datos.

generar desde bd

Especificamos la cadena de conexión hacia la base de datos.

cadena conexion


Ahora seleccionamos los objetos de la base de datos que queremos modelar en este caso seleccionamos las 3 tablas.

tablas


Con esto tendremos nuestro modelo de la base de datos.

modelo bd


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.

generador dbdcontext


Elegimos ADO.NET DbContext Generator(tienen que haberlo instalado antes).

DbContext Generator


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.

plantillas


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 programa\Microsoft ADO.NET Entity Framework 4.1\Binaries
EF4.1


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.

Proyecto 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.

inputfile


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.

espacio nombres


Por ultimo lo que tenemos que hacer es agregar una referencia del proyecto Entities en el proyecto DataAcces.

referencia entities


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.

Descargar Proyecto C#

Descargar Proyecto VB.Net
 
Nos vemos en la segunda parte donde desarrollaremos el código que tendrá nuestra cada de datos(DataAcces).

Ver segunda parte.
Desarrollo en Capas .Net(Parte 2) - Capa de Datos

0 comentarios:

Publicar un comentario en la entrada

Nota: solo los miembros de este blog pueden publicar comentarios.