Gerardo Contijoch

Experiencias del día a día trabajando con .NET – ASP.NET, C#, ASP.NET MVC y demas…

Posts Tagged ‘datatable’

Personalizar la carga de DataSets tipados

Posted by Gerardo Contijoch en febrero 6, 2009

Ayer comentaba que había comenzado a trabajar con DataSets tipados por primera vez y no tardé en encontrarme con algunos problemas, principalmente debido a la falta de costumbre al trabajar con ellos. Hoy me encontré con otro problema muy molesto que tiene una solución simplísima, pero que me costó encontrar.

El método estándar para llenar las tablas de un DataSet tipado es mediante el método Fill() del TableAdapter generado dinámicamente para cada tabla. El problema con el que me encontré fue que no había una manera de llenar las tablas con datos previamente filtrados. Luego de investigar un rato encontré con la solución: simplemente hay que abrir el DataSet en el editor de esquemas y hacer click derecho sobre la tabla que queramos filtrar. A continuación elegimos Add–>Query… y veremos que se abre un asistente que nos ayudará a crear una consulta nueva que filtre los datos como nos parezca. También es posible utilizar un SP ya existente o crear uno nuevo en el momento. Cabe aclarar que si nuestra consulta depende de valores dinámicos, los mismos pueden ser provistos en forma de parámetros en la consulta dentro del asistente que se abre y el asistente generará un método con los parámetros necesarios para la consulta.

Si nuestra consulta no esta asociada a una tabla en particular, esto mismo se puede hacer sobre el propio DataSet (haciendo click derecho sobre el fondo del editor de esquemas). En este caso, los métodos generados se encontrarán en un objeto QueriesTableAdapter.

¡Nos vemos en el próximo post!

Publicado originalmente en https://gerardocontijoch.wordpress.com.

Posted in Visual Studio | Etiquetado: , , | Leave a Comment »

Actualizar el esquema de un DataSet tipado en Visual Studio

Posted by Gerardo Contijoch en febrero 5, 2009

No tengo la costumbre de trabajar con DataSets tipados principalmente porque trabajo con DataReaders o DataTables no tipados. Me gusta tener acceso a los datos y controlar lo que se hace con ellos yo mismo, sin ninguna clase que me los formatee ni organice automáticamente. Sin embargo, hoy decidí darles una oportunidad dentro de un prototipo de aplicación ya que precisaba hacer algunos INSERTs y SELECTs sobre pocas tablas y no quería perder tiempo con SPs escritos a mano.

La verdad es que los DataSets tipados son ideales para prototipos simples y me vinieron muy bien, pero me encontré rápidamente con una limitación: no hay una manera sencilla de modificar su estructura para reflejar los cambios en la estructura de la DB (algo relativamente común en las primeras etapas de desarrollo). En realidad si la hay, pero a lo que me refiero es a que esperaba alguna opción en algún lugar del estilo ‘Update DataSet Schema’ o ‘Sync DataSet Schema’.

Buscando un poco encontré dos soluciones que parecen ser las más adecuadas para estos casos. La primera consiste simplemente en borrar las tablas del DataSet y volver a agregarlas a mano desde el Server Explorer, mientras que la segunda consiste en modificar las consultas a mano con las cuales se generaron las tablas del DataSet (seleccionando la opción Configure del menú contextual que aparece al hacer click derecho en la tabla dentro del editor de esquemas del DataSet).

El problema de ambas soluciones esta en que al realizar la actualización uno pierde todos los cambios que pudo haberle hecho a los DataSets y DataTables. Para arreglar esto, acá sugieren transformar las clases generadas por Visual Studio en clases parciales (agregando ‘partial’ a la definición de la clase) y agregar las modificaciones a esas clases (ahora parciales) dentro de otros archivos, diferentes de los que genera Visual Studio de manera automática. Así, cuando se regeneren los DataSets nuestros cambios no son eliminados. No tengo a mano una copia de Visual Studio 2005 para verificarlo, pero la versión 2008 ya genera los DataSets y DataTables como clases parciales por lo que nos ahorraríamos un paso en este caso.

Esperemos que en una próxima versión de Visual Studio haya alguna manera un poco mas ‘user friendly’ de hacer esto.

¡Nos vemos en el próximo post!

Publicado originalmente en https://gerardocontijoch.wordpress.com.

Posted in Visual Studio | Etiquetado: , , | 3 Comments »