LINQ es mucho más que LINQ to SQL

Uno de los “mind stoppers” con los que me encuentro con más frecuencia durante las charlas sobre LINQ es la idea preconcebida de que al hablar de LINQ se está hablando única y exclusivamente de una tecnología para acceder a bases de datos relacionales “encapsulando” la generación de las sentencias SQL. Tales opiniones frecuentemente equiparan LINQ como un todo con un mapeador objeto-relacional (ORM) como nHibernate o IdeaBlade DevForce, por solo mencionar algunos de los más conocidos.


Como intento demostrar en mi libro, esto *NO* es así. En primer lugar, aunque menos relevante dado que las expresiones de consulta de C# y VB en el fondo son mero “azúcar sintáctico” construido alrededor de llamadas a métodos extensores predefinidos en los proveedores, está el hecho de que, al estar soportado directamente en los lenguajes, LINQ ofrece un nivel de “inmersión” superior al que puede lograrse mediante el uso exclusivo de librerías.


En segundo lugar, y lo fundamental, LINQ es una tecnología genérica para acceder a cualquier almacén de datos que pueda verse como una secuencia o conjunto de secuencias de elementos de un cierto tipo: arrays, colecciones, documentos XML, DataSets o bases de datos relacionales son algunos ejemplos de las posibles fuentes LINQ para los que .NET 3.5 ofrece soporte predefinido; al ser también LINQ una tecnología abierta, es posible agregar ese soporte para fuentes no soportadas de manera predefinida: proveedores para sistemas de ficheros, ficheros binarios, tuberías (pipes) o bases de datos de información de proyectos en TFS son algunos de los ejemplos que se desarrollan en el libro. En general, como dijo Dinesh Kulkarni, precisamente Program Manager de LINQ to SQL, pronto tendremos hasta “LINQ to CoffeeMachine”: habrá proveedores LINQ para acceder a las más disímiles fuentes de datos.


En ese contexto, y con la práctica continuada, iremos avanzando hasta alcanzar lo que yo llamo el “nirvana LINQ”: el momento en que los programadores reconozcan al momento la posibilidad de utilizar una consulta integrada en el lenguaje para representar casi cualquier bucle o iteración en general que incluya selección, proyección, ordenación o agrupación, entre otras operaciones.


LINQ to SQL y el futuro LINQ to Entities son única y exclusivamente dos aplicaciones más de esa tecnología genérica; dos muy importantes, indudablemente, pero que no pueden ni deben “opacar” a las demás: LINQ, como Talonotel, es mucho más.

Octavio Hernandez

Desarrollador y consultor en tecnologías .NET. Microsoft C# MVP entre 2004 y 2010.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *