linq con visual studio 2008

32
LINQ CON VISUAL STUDIO 2008 Instituto Tecnológico Superior de Tepeaca PRESENTA ISC OMAR FLORES MARTÍNEZ Primer Congreso de Tecnologías de la Información de las Universidades Tecnológicas del Estado de Puebla 26/05/22

Upload: omicx

Post on 13-Jun-2015

6.491 views

Category:

Technology


1 download

DESCRIPTION

Presentacion de linq con visual studio 2008, muestra la capacidad que tiene linq para manejar consultas en distintos origenes de datos

TRANSCRIPT

Page 1: Linq con visual studio 2008

LINQ CON VISUAL STUDIO 2008

Instituto Tecnológico Superior de Tepeaca

P R E S E N T A

I S C O M A R F L O R E S M A R T Í N E Z

P r i m e r C o n g r e s o d e Te c n o l o g í a s d e l a I n f o r m a c i ó n d e l a s U n i v e r s i d a d e s

Te c n o l ó g i c a s d e l E s t a d o d e P u e b l a

jueves 13 de abril de 2023

Page 2: Linq con visual studio 2008

Introducción a LINQ

¿Porque LINQ?

Arquitectura de LINQ

Consultas en LINQ

LINQ y Tipos Genéricos

Variantes de LINQ

Acceso a Datos con LINQ

ORDEN DEL DIA

Page 3: Linq con visual studio 2008

Language Integrated Query (LINQ) es un componente de Microsoft .Net Framework 3.5 que añade la capacidad de realizar consultas nativamente a través de los lenguajes .Net ( C#, VB) usando una sintaxis similar a la de SQL.

Es un modelo de programación que simplifica y unifica la implementación de acceso a cualquier tipo de datos.

LINQ no impone a usar una arquitectura especifica, mas bien facilita la implementación de varias arquitecturas existentes para acceso a datos.

Visual Studio 2008 incluye ensamblados de proveedores para LINQ que habilitan su uso en colecciones, bases de datos de SQL Server, conjuntos de datos de ADO.NET, documentos XML y cualquier colección de objetos que admita la interfaz IEnumerable o la interfaz genérica IEnumerable<T> (espacio de nombres System.Collections.Generic)

INTRODUCCIÓN A LINQ

Page 4: Linq con visual studio 2008

Con frecuencia los programas deben acceder a diferentes dominios de datos:

Un documento XML Objetos en memoria Una base de datos

Cada dominio de datos tiene su propio modelo de acceso:

Base de datos -> SQL XML -> DOM, Xquery

Se utilizan los mismos modelos de codificación para consultar los datos en tipos de formatos y orígenes de datos diferentes

Siempre trabaja con objetos

¿ PORQUE LINQ ?

Page 5: Linq con visual studio 2008

ARQUITECTURA DE LINQ

Page 6: Linq con visual studio 2008

La expresión básica de la consulta contiene tres clausulas SELECT – FROM – WHERE

FROM especifica el origen de datosWHERE aplica el filtro SELECT especifica el tipo de los elementos devueltos

Aquí, lo importante es que, en LINQ, la propia variable de consulta no realiza ninguna acción ni devuelve datos. Simplemente almacena la información necesaria para generar los resultados cuando la consulta se ejecute posteriormente.

CONSULTAS EN LINQ

Page 7: Linq con visual studio 2008

LINQ trabaja en base a consultas, por lo tanto todas las operaciones se componen de la siguiente manera:

… CONSULTAS EN LINQ

En el ejemplo se muestra cómo se expresan las tres partes de una operación de consulta en el código fuente. En el ejemplo se utiliza por comodidad una matriz de enteros como origen de datos, pero los mismos conceptos se aplican a otros orígenes de datos.

1. Obtención del Origen de Datos2. Creación de la Consulta3. Ejecución de la Consulta

Page 8: Linq con visual studio 2008

En la ilustración se muestra la operación de consulta completa. En LINQ, la ejecución de la consulta es distinta de la propia consulta; en otras palabras, no se recuperan datos con la simple creación de la variable de consulta.

Page 9: Linq con visual studio 2008

Las consultas LINQ se basan en tipos genéricos, que se incluyeron por primera vez en el .Net Framework 2.0

1. Al crear una instancia de una clase de colección genérica List<T>, la T se reemplaza con el tipo de objeto que contendrá la lista.

Por ejemplo, una lista de cadenas se expresa como List<string> y una lista de objetos Customer se expresa como List<Customer>

2. IEnumerable<T> es la interfaz que permite enumerar las clases de colección genéricas mediante la instrucción foreach.Las clases de colección genéricas admiten IEnumerable<T> de la misma forma que las clases de colección no genéricas, como ArrayList, admiten IEnumerable

LINQ y Tipos Genéricos

Page 10: Linq con visual studio 2008

Las variables de consulta LINQ tienen tipos IEnumerable<T> o un tipo derivado, como IQueryable<T>.

Cuando hay una variable de consulta de tipo IEnumerable<Customer>, sólo significa que la consulta, cuando se ejecute, generará una secuencia de cero o más objetos Customer.

Variables IEnumerable<T> en LINQ

Page 11: Linq con visual studio 2008

Evitar la sintaxis genérica con el uso de la palabra clave var

La palabra clave var indica al compilador que deduzca el tipo de una variable de consulta examinando el origen de datos especificado en la cláusula FROM

La palabra clave var es útil cuando el tipo de la variable es obvio o cuando no es tan importante especificar explícitamente los tipos genéricos

Permitir al compilador administrar las declaraciones de tipos genéricos

Page 12: Linq con visual studio 2008

En la ilustración vemos el uso de la palabra clave var. Se genera el mismo código compilado en ambos casos

Page 13: Linq con visual studio 2008

LINQ to Objects

LINQ to Xml

LINQ to ADO .NET

oLINQ to DataSet

oLINQ to Entities

oLINQ to SQL

VARIANTES DE LINQ ...

Page 14: Linq con visual studio 2008

LINQ to Objects

Permite el acceso a datos en memoria usando la tecnología de LINQ

La condición es que esos datos expongan IEnumerable o IEnumerable<T>

Los arrays, colecciones, listas, etc. cumplen con esta condición

VARIANTES DE LINQ ...

Page 15: Linq con visual studio 2008

LINQ to XML

Permite el acceso a datos XML usando la tecnología de LINQ

Puede consultar y modificar el documento

Permite escribir consultas en el documento XML en memoria para recuperar colecciones de elementos y atributos

VARIANTES DE LINQ …

Page 16: Linq con visual studio 2008

LINQ to ADO .NET

Permite el acceso a datos ADO .NET usando la tecnología de LINQ

Se incluyen otras dos tecnologíasLINQ to DataSetLINQ to SQL

* Este será básicamente el tema que ampliaremos

VARIANTES DE LINQ …

Page 17: Linq con visual studio 2008

Introducción a LINQ

¿Porque LINQ?

Arquitectura de LINQ

Consultas en LINQ

LINQ y Tipos Genéricos

Variantes de LINQ

Acceso a Datos con LINQ

ORDEN DEL DIA

Page 18: Linq con visual studio 2008

LINQ to DataSet

Permite usar ADO .NET con LINQ

ACCESO A DATOS CON LINQ Y C#

Page 19: Linq con visual studio 2008

LINQ to DataSet

Simplificado mucho, llenamos el DataSet y después construimos y ejecutamos consultas LINQ sobre esos datos en memoria.

ACCESO A DATOS CON LINQ Y C#

Page 20: Linq con visual studio 2008

Ejemplo 1 LINQ to DataSet

ACCESO A DATOS CON LINQ Y C#

Este ejemplo utiliza Select para devolver todas las filas de la tabla Product y mostrar los nombres de producto.

Proyecto: LINQ_to_DataSet1

Page 21: Linq con visual studio 2008

ACCESO A DATOS CON LINQ Y C#

Page 22: Linq con visual studio 2008

LINQ mantiene la consulta en la variable usada

Cada vez que usemos la variable se ejecutará la consulta

Esto nos permite tener la consulta siempre actualizada, es lo que se conoce como ejecución aplazada (deferred execution)

ACCESO A DATOS CON LINQ Y C#

Es Importante saber que …

Page 23: Linq con visual studio 2008

Si queremos que la consulta solo se ejecute una vez o de forma inmediata, debemos usar algún método que la "lance" y la saque del estado "hibernado" en el que está

Si queremos que esos datos siempre sean los mismos y no nos interese que se actualicen, usaremos lo que se conoce como ejecución inmediata

ACCESO A DATOS CON LINQ Y C#

Page 24: Linq con visual studio 2008

El "truco" es asignar esos datos a una variable usando el método ToArray también ToList o ToDictionary

De esa forma, los datos que habrá en la variable de la consulta permanecerán aunque se cambie algo que afecte a la selección realizada

Aunque si se cambian algunos de esos datos, se reflejarán los cambios, pero no se "refrescará" la consulta

ACCESO A DATOS CON LINQ Y C#

Page 25: Linq con visual studio 2008

Ejemplo 2 LINQ to DataSet

ACCESO A DATOS CON LINQ Y C#

Este ejemplo muestra la ejecución inmediata utilizando el método ToArray, aunque se agregó una fila, se mostraran los mismos datos.

Proyecto: LINQ_to_DataSet2

Page 26: Linq con visual studio 2008

LINQ to SQL

Permite interactuar con SQL Server (solo soporta SQL Server y SQL Server Compact 3.5)

Implementación de OR/M (mapeador de objetos relacionales)

Modelar bases de datos relacionales con clase .NET

Podemos consultar, actualizar, añadir, borrar

LINQ to SQL convierte las consultas integradas en el lenguaje del modelo de objetos (C#) a SQL y las envía a la base de datos para su ejecución.

Incluye compatibilidad con los procedimientos almacenados y las funciones definidas por el usuario en la base de datos

ACCESO A DATOS CON LINQ Y C#

Page 27: Linq con visual studio 2008

LINQ to SQL - OR/Designer (Object Relational Designer)

Visual Studio 2008 viene con un diseñador de LINQ to SQL que nos aporta una forma fácil de modelar y visualizar una base de datos como un modelo de objeto

Usando este diseñador LINQ to SQL podemos crear fácilmente una representación de la base de datos

Con este diseñador crear clases, métodos y demás monerías solo es cuestión de ¡ arrastrar y soltar !

Con el diseñador de objetos relacionales, arrastraremos las clases y los procedimientos almacenados (o funciones) y se generará el código para acceder a ellos directamente

ACCESO A DATOS CON LINQ Y C#

Page 28: Linq con visual studio 2008

LINQ to SQL – OR/Designer

ACCESO A DATOS CON LINQ Y C#

Visual Studio 2008 OR/Designer base de datos Northwind

Proyecto: LINQ_to_SQL1

Page 29: Linq con visual studio 2008

Ejemplo LINQ to SQL

ACCESO A DATOS CON LINQ Y C#

Este ejemplo muestra los registros en la tabla Products de la bd Northwind donde el nombre de la categoría es Beverages

Proyecto: LINQ_to_SQL

Page 30: Linq con visual studio 2008

Ejemplo LINQ to SQL

ACCESO A DATOS CON LINQ Y C#

Método utilizado con la clase dbNorthwindDataContext como origen de datos y asignar la consulta LINQ al dataGridView por medio de un bindingSource

Proyecto: LINQ_to_SQL

Page 32: Linq con visual studio 2008

¡ GRACIAS POR SU ATENCION !

I S C O m a r F l o r e s M a r t í n e z

h t t p : / / o m i x i s c . b l o g s p o t . c o m

o f m . i s c @ g m a i l . c o m