MCTS 70-561: Consultando data

Construyendo comandos para consultas a base de datos, es un tema que siempre despierta interés y siempre esta un mejoramiento continuo. Muchos framework han tratado han tratado de sobreponerse, desde el antes usado SqlHelper o ahora la ultima versión del DAAB, pero la fin al cabo todas usan los objetos básicos de ADO.NET. En muchos casos cada casa de software siempre necesita acceso a datos personalizados, lo que motiva a la creación de su propio framework de acceso a datos, y nuevamente llegamos a usar las clases básicas de acceso a datos de ADO.NET. Con SqlCommand, podemos crear todo tipo de consultas para una base SQL-Server, desde crear nuestros propios queries, hasta llamar a StoreProcedures, y gracias a SqlParameter podemos parametrizar nuestras consultas, además que siempre vamos a encontrar soporte en ADO.NET para las nuevas features de SQL, por ejemplo en SQL 2005 se agrego una columna para el soporte de Xml, y en ADO.NET también se cree el tipo de dato SqlXml para soportar a esta nueva columna, los comandos también me permiten retornar valores. Y si están usando DataSets con SqlDataAdapter, pueden echarle un vistazo a SqlCommandBuilder, si usan listas para transmitir data entre las capas, no es necesario.

Hay muchos mitos en ADO.NET, de cual es la mejor DataReader vs DataSet, la serie de Carlos Walzer es excelente: Cazando mitos con ADO.NET.

Recuerden que en VS2005 (o superior), a evolucionado el DataAdatper, para crear una clase llamada TableAdatper, en aplicaciones web nunca los he usado, creo su mayor aplicación más va por el lado de Aplicaciones Windows.

Queries asíncronos, en ADO.NET 2.0, se mejor el soporte para este tipo de escenarios. En este artículo: Asynchronous Command Execution in ADO.NET 2.0, Pablo Castro nos comenta sobre los nuevos métodos que nos permitirán hacer tareas asíncronas con ADO.NET 2.0. En este ejemplo: Asynchronous command execution in .NET 2.0, podemos ver rápidamente como podemos usar los nuevos métodos de la clase SqlCommand, para el soporte de tareas asíncronas, pero notar en esta FAQ: ADO.NET 2.0 Asynchronous Command Execution (ASYNC) FAQ, que el uso de ASYNC=TRUE, en la cadena de conexión sólo para tareas asíncronas, más no para tareas comunes. Aquí otros artículos: Executing Database Commands Asynchronously with ADO.NET 2.0, y Asynchronous Data Access using Callback Model, también revisar los detalles detrás de los comandos asíncronos: Shared Memory Provider and Async Commands.

Hay algunos tipos que necesitan un cuidado especial, como por ejemplo el manejo de archivos, en file-system o en la base de datos?, esto básicamente dependerá de los requerimientos que se tenga, dependiendo de tu modelo, las tareas de backup de la información tendrá que ser de la base de datos, y de las carpetas de archivos, tendrás que tener doble manejo de seguridad, entre otras cosas a tener en cuenta. Aquí un ejemplo: Utilize ADO.NET and C# to work with BLOB data, mas de la discusión:file system vs Database images. Con SQL Server 2008, se propone otro modelo para almacenar archivos en la base de datos pero con un híbrido con FileSystem, leer el siguiente artículo: Getting Traction with SQL Server 2008 Filestream. Otro tipo de dato a manejar es el tipo de dato espacial que se liberará en SQL Server 2008: Demystifying Spatial Support in SQL Server 2008. Otra de las nuevas en SQL Server 2008, es el soporte del tipo tabla como parámetro, por su parte ADO.NET 3.5, ya soporta esta feature, aunque aún no se tenga la versión final de SQL Server 2008: SQL Server 2008: Table Value Parameters (TVP).

De LINQ, hay mucho en la red. Un artículo El proyecto LINQ, los post de ScottGu's de LINQ, incluido una serie que tiene de LINQ to SQL. La presentación del gran Octavio Hernández, en el TechDays 2008: presentación(pptx) y demos. Y esta aproximación de LINQ To SQL en una Aplicación en Capas, teniendo en cuenta los comentarios que se han hecho.

Saludos,

Published 24/3/2008 1:40 por Sergio Tarrillo
Archivado en: ,,,
Comparte este post:
http://geeks.ms/blogs/sergiotarrillo/archive/2008/03/24/81554.aspx