Está en la página 1de 25

Escuela de Informtica y Telecomunicaciones

Programacin .Net ADO.Net Acceso a Datos


Implementando una Arquitectura en Capas

Actividades:
Crear estructura de la Solucin. ..................................................................................... 1
Crear Solucin ............................................................................................................ 2
Agregar proyectos ...................................................................................................... 2
Creacin de la Capa de Datos. ........................................................................................ 3
Generacin del Modelo de Entidades ......................................................................... 3
Creacin de la Capa de Presentacin.............................................................................. 6
Creacin de la Pgina Principal ................................................................................... 6
Creacin de la Capa de Negocio. .................................................................................. 10
Creacin de las Componentes de Negocio Base ........................................................ 10
Creacin de las Componentes de Negocio ................................................................ 11
Creacin de un proyecto de Pruebas Unitarias ............................................................. 14
Creacin del Maestro de Bibliotecas ............................................................................ 15
Creacin y enlace de la Coleccin de Negocio ........................................................... 15
Mantencin de los registros de Biblioteca .................................................................... 20
Creacin del Mantenedor ......................................................................................... 20
Creacin de la pgina de estadsticas. .......................................................................... 23
Escuela de Informtica y Telecomunicaciones

Crear estructura de la Solucin.

Esta actividad crear los elementos principales requeridos a nivel de aplicacin y componentes. Cubriendo
los elementos generales de las capas de Datos, Negocio y Presentacin. Los objetivos generales
perseguidos son:

1. Construccin del EDM de soporte para la capa de datos del modelo de datos propuesto para este
ejercicio

2. Construccin de los componentes (clases) de negocio requeridos, para dar solucin a los
requerimientos de interfaz de usuario, y la forma de comunicarse al EDM generado para dar
solucin a estas necesidades.

3. Generar la Aplicacin Web que permite al usuario interactuar, para realizar las funcionalidades
esperadas.

La solucin debe ser capaz de resolver lo siguiente:

1. Presentar un listado de todos los registros de la entidad que encontramos en la base de datos.

2. Proveer una pgina de mantencin de los registros de entidad que cubra: creacin, consulta,
actualizacin y eliminacin de entidades.

3. Resolver consultas estadsticas de las entidades generadas.

4. Organizar la interfaz de usuario mediante un men para el acceso a las 3 funcionalidades descritas

Base de Datos:
Se requerir de la base de datos Bibliotecas que se provee como script adjunto a esta gua.

Pgina 1
Escuela de Informtica y Telecomunicaciones

Crear Solucin
Recuerde crear un directorio donde alojar la solucin y no el entregado por defecto.

a) Desde el men seleccionamos Archivo > Nuevo > Proyecto

b) Desde la ventana Nuevo Proyecto, seleccione Otros tipos de Proyectos > Solucin en Blanco:

c) El nombre de la solucin es Solucion en Capas.

Agregar proyectos
Cada uno de los proyectos a ser creados deben tener los nombres que reflejen su cometido, para ello se
utilizarn: Bibliotecas.DALC, Bibliotecas.Negocio y WebBibliotecas.

a) Seleccionando la solucin y desde el men contextual, agregue una nueva Biblioteca de Clases C# de
nombre Bibliotecas.DALC

b) Agregue una nueva Biblioteca de Clases C# de nombre Bibliotecas.Negocio

c) Agregue una nueva Aplicacin web vaca de ASP.Net de nombre WebBibliotecas (proyecto de inicio)

d) Configure el Web Site creado, como proyecto de partida.

Con estos pasos tenemos los componentes requeridos en cada capa, como arquitectura base.

Pgina 2
Escuela de Informtica y Telecomunicaciones

Creacin de la Capa de Datos.

Generacin del Modelo de Entidades


a) Nos situamos en el proyecto Bibliotecas.DALC y desde el men contextual del proyecto agregamos un
nuevo tem del tipo ADO.Net Entity Data Model de nombre BibliotecasEDM, como lo indica la imagen:

b) Se iniciar el asistente de creacin del modelo y en el primer paso debemos indicar que el modelo se
generar a partir de una base de Datos:

Pgina 3
Escuela de Informtica y Telecomunicaciones

c) Luego debemos generar la conexin a la base de datos y darle un nombre para guardarla en el archivo
de configuracin de la aplicacin:

d) Posteriormente se deben seleccionar los objetos de la base de datos que sern incorporados al modelo
de entidades, para el caso de esta actividad se deben seleccionar las tablas y procedimientos
almacenados e ingresamos el nombre BibliotecasModel como espacio de nombres:

Pgina 4
Escuela de Informtica y Telecomunicaciones

e) Al finalizar el asistente se habr creado el modelo en nuestra librera, desde donde referenciaremos las
respectivas entidades y acciones asociadas:

f) En la Vista de Clases, podremos ver las entidades que se han generado como producto del proceso:

g) Con esto ya tenemos la estructura base de la Capa de Datos, posteriormente los requerimientos
indicarn los ajustes al modelo.

Pgina 5
Escuela de Informtica y Telecomunicaciones

Creacin de la Capa de Presentacin.


Esta actividad agregar los elementos bsicos de la Capa de Presentacin, los cuales irn tomando vida a
medida que se codifique la Capa de Negocio.

Creacin de la Pgina Principal


a) Nos situamos en el sitio WebBibliotecas y agregamos una pgina Principal (Master Page), manteniendo
el nombre por defecto MasterPage.master:

b) Ahora agregamos un Mapa del Sitio, manteniendo el nombre por defecto Web.sitemap:

Pgina 6
Escuela de Informtica y Telecomunicaciones

c) La estructura de navegacin de la aplicacin en base a los requerimientos, debiese reflejar lo siguiente:

d) Habiendo creado el Mapa del Sitio, podemos agregas los elementos de navegacin en la pgina
Principal.

e) En la pgina principal MasterPage.master cmbiese al modo cdigo de la pgina y agregue 2 controles


Panel de nombre pnlMenu y pnlSiteMap:

f) Cambie al modo de diseo y en el panel del men (pnlMenu) agregue un control SiteMapDataSource
desde el grupo de controles de Datos de nombre smdsMenu:

Pgina 7
Escuela de Informtica y Telecomunicaciones

g) A continuacin del SiteMapDataSource, agregue un control Menu desde el grupo de controles de


Exploracin, seleccione un Formato de Presentacin y seleccione la fuente de datos del SiteMap creada
en el paso anterior:

h) Dentro del panel de SiteMap (pnlSiteMap), agregue un control SiteMapPath desde el grupo de
controles de Exploracin, seleccione un Formato de Presentacin ad-hoc:

i) Con estos pasos ya se encuentra configurada la pgina Principal y los mens de navegacin.

Pgina 8
Escuela de Informtica y Telecomunicaciones

Creacin de las pginas adicionales:


a) En el sitio WebBibliotecas agregamos un Formulario Web Pgina Web de nombre Inicio.aspx, la cual
debe basarse en la Pgina Principal MasterPage.master:

b) Agregue las siguientes pginas basadas en la Pgina Principal: Maestro.aspx, Mantenedor.aspx y


Estadistica.aspx. Recuerde que estos nombres estn referenciados en el Mapa del Sitio, por lo cual
deben estar sincronizados.

c) Configure la aplicacin Web como proyecto de partida y la pgina Incio.aspx como pgina de inicio.

d) Ejecute la aplicacin y valide la navegacin con el men.

Pgina 9
Escuela de Informtica y Telecomunicaciones

Creacin de la Capa de Negocio.

Creacin de las Componentes de Negocio Base


h) Nos situamos en el proyecto Bibliotecas.Negocio y agregaremos una clase de nombre CommonBC:

i) De esta clase heredarn las clases de negocio para acceder a una instancia nica del Modelo, de manera
que el contexto sea compartido por las distintas entidades del EDM. Como accedemos al modelo se
debe agregar la respectiva referencia al proyecto Bibliotecas.DALC e incluir la referencia al
System.Data.Entities

j) Para que la clase provea de este acceso compartido, NO deber depender de una instancia particular,
por lo tanto hacemos la construccin de manera esttica:

Pgina 10
Escuela de Informtica y Telecomunicaciones

Creacin de las Componentes de Negocio


Ya tenemos parte de los elementos bases, por lo tanto podemos iniciar la construccin de las clases de
negocio formales:

a) Agregamos una nueva clase de nombre Biblioteca:

b) Esta clase deber ser pblica para su acceso desde la capa de presentacin:

c) Como se muestra en el diagrama, ser necesario agregar las propiedades que permitan recibir los
valores para ser luego mapeados con las propiedades de la instancia de la Entidad del EDM y el
constructor por defecto con la inicializacin de estas propiedades.

d) Agregue un mtodo Create() con retorno bool, en el cual accedemos a la instancia del modelo que nos
provee la clase base CommonBC, para la creacin de una nueva entidad. Asignamos los valores de
nuestras propiedades a la entidad y hacemos el llamado directo para agregar la nueva instancia y
guardar los cambios:

Pgina 11
Escuela de Informtica y Telecomunicaciones

e) Para leer los valores de una entidad creamos el mtodo Read() y debemos acceder a la entidad
mediante la llave nica del modelo de datos (PK Primary Key). Luego traspasamos los valores de la
entidad a nuestras propiedades:

Pgina 12
Escuela de Informtica y Telecomunicaciones

f) Para actualiza una entidad existente creamos el mtodo Update(), tambin accedemos a la entidad
mediante la llave nica del modelo de datos, traspasamos los valores y guardamos los cambios:

g) Finalmente para eliminar una entidad creamos el mtodo Delete(), nuevamente hacemos uso de la
llave nica para identificar y solicitar la eliminacin de la entidad:

Pgina 13
Escuela de Informtica y Telecomunicaciones

Creacin de un proyecto de Pruebas Unitarias


Como a estas alturas la interfaz de usuario que se construir en la Capa de Presentacin, dista mucho de
estar en condiciones de ser codificada, es recomendable la construccin de una pequea aplicacin que nos
permita validar el funcionamiento de las componentes.

a) Agregamos un proyecto de Consola de nombre PruebasUnitarias:

b) En este proyecto debemos agregar las referencias a la librera Bibliotecas.Negocio y


System.Data.Entities

c) Como este proyecto ser la aplicacin cliente para las pruebas, es requerido incluir aqu un archivo de
configuracin, para registrar el ConnectionString del EDM, este lo podemos agregar de forma manual o
simplemente copiar el archivo App.config del proyecto Bibliotecas.DALC:

d) Cree un mtodo para cada una de las acciones codificadas para el CRUD.

e) Deberemos definir este, como proyecto de partida.

f) Ejecute la aplicacin y valide el funcionamiento esperado.

Pgina 14
Escuela de Informtica y Telecomunicaciones

Creacin del Maestro de Bibliotecas


Creacin y enlace de la Coleccin de Negocio
Principalmente la coleccin de negocio nos dar acceso a las funcionalidades grupales, accediendo para ello
al modelo de entidades y resolviendo las consultas grupales para las estadsticas.

a) Nos situamos en el proyecto Bibliotecas.Negocio y agregaremos una clase de nombre


BibliotecaCollection:

b) Lo primero que debemos proveer es un mtodo para retornar el listado completo de empresas, pero
este debe ser del tipo List<Bibliotecas.Negocio.Biblioteca>, ya que a pesar que podemos acceder
directo a una lista del EDM, este no puede ser conocido por la Capa de Presentacin. Por lo tanto los
primero que crearemos ser un mtodo privado para generar una lista de negocio en base a una lista de
entidades EDM, este mtodo lo podemos utilizar cada vez que necesitamos hacer esta transformacin.

c) Agregamos a la coleccin un mtodo privado de nombre GenerarListado(), el cual recibe una lista
Bibliotecas.DALC.Biblioteca y la transforma en una lista de Empresas.Negocio.Empresa:

Pgina 15
Escuela de Informtica y Telecomunicaciones

d) Teniendo la utilidad del mtodo anterior podemos convertir cada lista del EDM (de ms fcil consulta) a
una lista que puede ser enviada a la Capa de Presentacin. Agregamos entonces el primer mtodo para
proveer de registros al GridView de nombre ReadAll() el cual retorna la lista completa de entidades:

e) Con este mtodo podemos poblar nuestro GridView, por lo tanto vamos a la pgina Maestro.aspx y
agregamos un control panel y en su interior un GridView de nombre gvBibliotecas. Debemos agregar
la referencia hacia la componente de negocio desde nuestro sitio web, para poder utilizar la clase y
mtodo creado. Como el sitio web dar el contexto de ejecucin, debemos asegurarnos que en el
archivo web.config, se encuentre la informacin de conexin a la base de datos.

f) Para aprovechar la capacidad de enlace con los controles que son fuentes de datos, haremos uso parcial
(como ayuda) de un control ObjectDataSource, por lo tanto agregamos uno a la pgina. Desde las
tareas del ObjectDataSource, seleccionamos la opcin Configurar Fuente de Datos y desde la lista de
objetos de negocio que se nos presenta, debemos seleccionar Bibliotecas.Negocio.BibliotecaCollection
y avanzamos a la siguiente pantalla.

g) En la lista seleccionamos el mtodo ReadAll() y damos por finalizada la configuracin:

Pgina 16
Escuela de Informtica y Telecomunicaciones

h) En el control GridView seleccionamos un formato ad-hoc y luego escogemos la fuente de datos creada,
para que se auto-configure y de esta forma nos evitamos crear manualmente cada columna.

i) Luego de obtener la construccin de la columnas, quitamos el enlace creado borrando el valor de la


propiedad DataSourceID y respondiendo NO a la consulta de refresco de campos:

Pgina 17
Escuela de Informtica y Telecomunicaciones

j) Como ms adelante se requiere rescatar el valor del campo llave (PK), debemos agregarlo en la
propiedad DataKeyNames del GridView:

k) Como ya utilizamos el ObjectDataSource en la definicin de columnas, ahora lo debemos eliminar de la


pgina.

l) Para habilitar la paginacin configuramos el valor de la propiedad AllowPaging en true.

m) En el evento Load de la pgina se enlazar la coleccin con el GridView:

Pgina 18
Escuela de Informtica y Telecomunicaciones

n) La paginacin de la coleccin no puede ser ejecutada de manera automtica, ya que hemos asignado la
fuente de datos de manera manual, por lo tanto debemos hacernos cargo del cambio entre pginas
de la informacin. Pero esto es una tarea sencilla que debemos programar en el evento
PageIndexChanging:

o) Con esto ya tenemos las funciones generales del GridView para poder desplegar la informacin.

Pgina 19
Escuela de Informtica y Telecomunicaciones

Mantencin de los registros de Biblioteca


En los requerimientos definidos para el maestro de bibliotecas debemos hacernos cargo de la creacin,
consulta, edicin y eliminacin de entidades, para ello vamos a recurrir a los mtodos generados en la clase
de negocio Bibliotecas.Negocio.Biblioteca:

Creacin del Mantenedor


En la pgina Mantenedor.aspx, debemos agregar los controles de interfaz que nos permitan ejecutar las
operaciones definidas:

a) Nos situamos en la pgina Mantenedor.aspx y agregamos los siguientes controles:

Tipo Nombre Funcin


TextBox txtId Captura el Id de la biblioteca
TextBox txtNombre Captura el Nombre de la biblioteca
CheckBox chkPublica Captura el tipo pblico de la biblioteca
TextBox txtInauguracion Captura la fecha de Inauguracin de la biblioteca
TextBox txtLibros Captura la cantidad de Libros de la biblioteca
Button btnConsultar Lee y carga los datos de la biblioteca en base al Id
Button btnCrear Crea un nuevo de registro de biblioteca
Button btnActualizar Graba los cambios en los datos de la biblioteca
Button btnEliminar Elimina un registro de biblioteca en base al Id
Label lblMensaje Informa el resultado de las operaciones de los botones.

b) Programamos el evento Clic del botn Consultar, este har uso del evento Read() de la clase de
negocio, para poblar los datos si el Id ingresado existe:

c) El evento hace uso de un mtodo para limpiar los datos ante errores de nombre LimpiarControles(),
este debe ser agregado a la pgina con el siguiente cdigo de referencia:

Pgina 20
Escuela de Informtica y Telecomunicaciones

d) Programamos el evento Clic del botn Crear, este har uso del evento Create() de la clase de negocio,
para crear la nueva entidad si el Id ingresado NO existe:

e) Programamos el evento Clic del botn Actualizar, este har uso del evento Update() de la clase de
negocio, para modificar los datos si el Id ingresado existe:

Pgina 21
Escuela de Informtica y Telecomunicaciones

f) Programamos el evento Clic del botn Eliminar, este har uso del evento Delete() de la clase de
negocio, para eliminar la entidad si el Id ingresado existe:

Pgina 22
Escuela de Informtica y Telecomunicaciones

Creacin de la pgina de estadsticas.

Esta pgina interacta principalmente con la coleccin de bibliotecas, en donde incorporaremos los
mtodos requeridos. Veremos como LINQ to Entities, nos facilita la forma de realizar las consultas que son
solicitadas en el requerimiento:

a) En la pgina de Estadistica.aspx, agregaremos una tabla y los controles respectivos para realizar las
consultas y desplegar los resultados (Botones y Textbox). Las consulta resolver sern:

Nmero de bibliotecas pblicas y privadas.


Nmero de bibliotecas inauguradas en 2013.
Nmero Total de Libros en las bibliotecas.
Promedio de Libros en las bibliotecas.
Nombre de la biblioteca con ms y con menos libros.
Nmero de bibliotecas en un rango de libros.

b) Para la consulta de pblicas y privadas, necesitamos incorporar un mtodo que discrimine esta cantidad
por tipo:

c) En la consulta de la inauguracin por ao se debe incluir un mtodo que tome esta parte de la
propiedad Inauguracion:

d) Para el total de libros haremos uso de la funcin agregada Sum():

Pgina 23
Escuela de Informtica y Telecomunicaciones

e) El promedio de libros har uso de la funcin agregada Average():

f) Los nombres de las bibliotecas con ms y menos libros se implementarn en mtodos diferentes, ya que
la naturaleza de la consulta es similar pero el resultado es distinto:

g) Para el rango incorporamos un nuevo mtodo que aplique este filtro en la misma consulta:

h) Con los mtodos creados, solo restara llamarlos desde la interfaz de la pgina, para presentar los
resultados.

Pgina 24