Este documento describe cómo usar LINQ to SQL para consultar una base de datos relacional. Explica cómo crear un modelo de datos con LINQ to SQL y cómo usar expresiones LINQ para obtener, filtrar y paginar datos de la base de datos. También muestra cómo enlazar los resultados de las consultas LINQ a controles ASP.NET para mostrar los datos en una aplicación web.
4. Los resultados de las consultas LINQ implementa la interfaz IEnumerable - la cual es una interfaz que los controles de servidor de ASP.NET soportan para enlazar datos. Lo que implica que podemos enlazar los resultados de cualquier consulta LINQ, LINQ to SQL, o LINQ to XML a cualquier control ASP.NET.
Por ejemplo, podemos declarar un control <asp:gridview> en una página .aspx de la siguiente forma:
Luego, podemos enlazar los resultados de la consulta LINQ to SQL que escribimos antes:
Esto generará una página como la siguiente:
Restringiendo los resultados de la consulta.
Hasta ahora, cuando evaluamos una consulta de productos, estamos obteniendo por defecto todas las columnas de datos necesarias para cubrir la entidad de Product.
Por ejemplo, esta consulta para obtener productos:
5. El resultado de esta consulta es:
Normalmente sólo queremos un subconjunto de los datos de cada producto. Podemos usar la nueva caracterÃstica que LINQ y los compiladores de C# y VB tienen para indicar que sólo queremos un subconjunto de los datos, modificando la consulta LINQ to SQL de la siguiente forma:
Con esto obtendremos un subconjunto de los datos que se obtienen de la base de datos (como vemos con el visor del debugger):
7. La sentencia SQL anterior hace que los valores NumOrders y Revenue se calculen dentro del servidor SQL, y devuelve los siguientes valores de la base de datos (realmente rápido):
Podemos enlazar el resultado anterior a nuestro gridview:
10. Esto nos dará una página de productos, filtrada para mostrar aquellos productos que tengan más de cinco pedidos, mostrando datos calculados dinámicamente, y que son paginables a partir de una cadena de consulta:
Nota: Cuando trabajamos contra SQL 2005, LINQ to SQL usará la función SQL ROW_NUMBER() para crear toda la lógica de paginación en la base de datos. Esto nos asegura que sólo devolverá las 10 filas de datos que queremos mostrar en la página:
Esto hace realmente fácil y eficiente navegar por grandes cantidades de datos.