2.27.2010

Usando el ObjectDataSource en una Aplicación n-Layer

Uno de los controles menos utilizando cuando se desarrollan aplicaciones en .NET es el objeto ObjectDataSource. He visto en muchas ocasiones el uso del objeto SqlDataSource para conectarse directamente a una base de datos SQL y realizar operaciones contra la misma, pero en raras ocasiones he visto a los desarrolladores aprovecharse del objecto ObjectDataSource y sacarle verdaderamente provecho. Para entender como funciona este objeto, vamos a crear una aplicación Web que nos va a permitir obtener registros a través de este control y despelgarlos en un DataGrid.

El ObjectDataSource es un objeto que se pega directamente a los métodos contenidos en una clase específica. Idealmente a los métodos de nuestra lógica de negocios. Por esta razón vamos a construir una tabla llamada temarios y vamos a crear una capa de acceso a datos utilizando el Entity Framework.

En la siguiente imagen se muestra la tabla temarios la cual es con la que vamos a trabajar.

image

Seguidamente vamos a crear nuestra capa de acceso a datos y agregar un modelo del Entity Framework para tener acceso vía ORM al repositorio de datos.

image

image

El siguiente paso es crear nuestra logica de negocios. Para esto vamos a crear otra librería en la cual vamos a agregar las clases y la lógica de negocio necesario desde nuestra página de temarios. En esta capa vamos a usar LinqToEntities. Nótese el nombre de los métodos resaltado, porque los vamos a utilizar desde el ObjectDataSource.

image

Seguidamente creamos una página Web y le agregamos un DataGrid el cual llamaremos dgTemarios.

image

Ahora procedemos a agregar un objectDataSource dentro de nuestra pantalla y le damos click en el tag de ayuda donde dice “Configure Data Source”.

image

En la primera pantalla del wizard, seleccionamos el componente y la clase del cual queremos utilizar los métodos para acceder al repositorio de datos, en nuestro caso vamos a utilizar la clase Temario_BL de la lógica de negocios de la aplicación.

image

En la siguiente pantalla del wizard procedemos a configurar el ObjectDatasource. Como podemos ver en la figura siguiente, el wizard nos presenta las cuatro operaciones básicas y nos permite seleccionar los métodos que queremos para cada una de las operaciones. En nuestro caso, vamos a seleccionar ObtenerTemarios, el cual retorna una lista genéricas de la entidad Temario - List<Temario>.

image

El objectDataSource debe verse así una vez configurado con el método select – Nótese que no estamos obligados a configurar todos los métodos del objectDataSource.

image

El último paso es ligar el Datagrid con el ObjectDataSource. Para lograr esto, procedemos a modificar la propiedad DataSourceId a través del tag inteligente del grid y seleccionado el datasource deseado en el combo de Choose Data Source tal y como lo muestra la siguiente figura.

image

Con esto, ya podemos obtener los registros desde el repositorio de datos.