SlideShare una empresa de Scribd logo
1 de 32
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 T e 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
T e 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
sábado, 31 de enero de 2015
 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
 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)
 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
 La expresión básica de la consulta contiene tres clausulas SELECT – FROM –
WHERE
FROM especifica el origen de datos
WHERE 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.
 LINQ trabaja en base a consultas, por lo tanto todas las operaciones se
componen de la siguiente manera:
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 Datos
2. Creación de la Consulta
3. Ejecución de la Consulta
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.
 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
 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.
 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
En la ilustración vemos el uso de la palabra clave var. Se genera el mismo código
compilado en ambos casos
LINQ to Objects
LINQ to Xml
LINQ to ADO .NET
oLINQ to DataSet
oLINQ to Entities
oLINQ to SQL
 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
 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
 LINQ to ADO .NET
 Permite el acceso a datos ADO .NET usando la tecnología de LINQ
 Se incluyen otras dos tecnologías
LINQ to DataSet
LINQ to SQL
* Este será básicamente el tema que ampliaremos
 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
 LINQ to DataSet
 Permite usar ADO .NET con LINQ
 LINQ to DataSet
 Simplificado mucho, llenamos el DataSet
y después construimos y ejecutamos
consultas LINQ sobre esos datos en
memoria.
 Ejemplo 1 LINQ to DataSet
Este ejemplo utiliza Select para devolver todas las filas de la
tabla Product y mostrar los nombres de producto.
Proyecto: LINQ_to_DataSet1
 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)
 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
 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
 Ejemplo 2 LINQ to DataSet
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
 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
 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
 LINQ to SQL – OR/Designer
Visual Studio 2008 OR/Designer base de datos Northwind
Proyecto: LINQ_to_SQL1
 Ejemplo LINQ to SQL
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
 Ejemplo LINQ to SQL
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
 http://msdn.microsoft.com/es-es/library/bb386943.aspx
 http://msdn.microsoft.com/en-us/library/bb308959.aspx
 http://geeks.ms/blogs/mredison/archive/tags/LINQ/default.
aspx
 http://www.devjoker.com/contenidos/catss/326/LinQ-To-
SQL--Un-ejemplo-sencillo.aspx
 http://www.codeproject.com/KB/vista/LINQ_1.aspx
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

Más contenido relacionado

Destacado

Programación visual con VB.NET
Programación visual con VB.NETProgramación visual con VB.NET
Programación visual con VB.NETYamil Lambert
 
Trabajo 2 transacciones en base de datos
Trabajo 2   transacciones en base de datosTrabajo 2   transacciones en base de datos
Trabajo 2 transacciones en base de datosJose O- Vera
 
Mantto con vb2010
Mantto con vb2010Mantto con vb2010
Mantto con vb2010tihuilo
 
Metodologia xp
Metodologia xpMetodologia xp
Metodologia xpfiremas
 
Depuración de aplicaciones en visual studio
Depuración de aplicaciones en visual studioDepuración de aplicaciones en visual studio
Depuración de aplicaciones en visual studioJavier Hermoso Blanco
 
Module 3: Introduction to LINQ (PowerPoint Slides)
Module 3: Introduction to LINQ (PowerPoint Slides)Module 3: Introduction to LINQ (PowerPoint Slides)
Module 3: Introduction to LINQ (PowerPoint Slides)Mohamed Saleh
 
Metodologia xp
Metodologia xpMetodologia xp
Metodologia xpCrisCobol
 
Metodologias agiles Programacion Xtrema
Metodologias agiles Programacion Xtrema Metodologias agiles Programacion Xtrema
Metodologias agiles Programacion Xtrema Lis Pater
 

Destacado (12)

Programación visual con VB.NET
Programación visual con VB.NETProgramación visual con VB.NET
Programación visual con VB.NET
 
Trabajo 2 transacciones en base de datos
Trabajo 2   transacciones en base de datosTrabajo 2   transacciones en base de datos
Trabajo 2 transacciones en base de datos
 
Mantto con vb2010
Mantto con vb2010Mantto con vb2010
Mantto con vb2010
 
Metodologia xp
Metodologia xpMetodologia xp
Metodologia xp
 
Depuración de aplicaciones en visual studio
Depuración de aplicaciones en visual studioDepuración de aplicaciones en visual studio
Depuración de aplicaciones en visual studio
 
Module 3: Introduction to LINQ (PowerPoint Slides)
Module 3: Introduction to LINQ (PowerPoint Slides)Module 3: Introduction to LINQ (PowerPoint Slides)
Module 3: Introduction to LINQ (PowerPoint Slides)
 
Metodologia xp
Metodologia xpMetodologia xp
Metodologia xp
 
Linq
LinqLinq
Linq
 
manual visual basic 01
manual visual basic 01manual visual basic 01
manual visual basic 01
 
LINQ
LINQLINQ
LINQ
 
MANUAL DE VISUAL BASIC. 2010
MANUAL DE VISUAL BASIC. 2010MANUAL DE VISUAL BASIC. 2010
MANUAL DE VISUAL BASIC. 2010
 
Metodologias agiles Programacion Xtrema
Metodologias agiles Programacion Xtrema Metodologias agiles Programacion Xtrema
Metodologias agiles Programacion Xtrema
 

Similar a Linq con visual studio 2008

Introduccion a-linq..www.freelibros.com
Introduccion a-linq..www.freelibros.comIntroduccion a-linq..www.freelibros.com
Introduccion a-linq..www.freelibros.comSimon Camacho
 
Linq to sql 3
Linq to sql 3Linq to sql 3
Linq to sql 3jcfarit
 
13-Unidad 3: Operaciones LINQ -3.1 Introducción 3.2 LINQ SELECT 3.3 LINQ INSERT
13-Unidad 3: Operaciones LINQ -3.1 Introducción 3.2 LINQ SELECT 3.3 LINQ INSERT13-Unidad 3: Operaciones LINQ -3.1 Introducción 3.2 LINQ SELECT 3.3 LINQ INSERT
13-Unidad 3: Operaciones LINQ -3.1 Introducción 3.2 LINQ SELECT 3.3 LINQ INSERTLuis Fernando Aguas Bucheli
 
Introduccion A Linq 1205779028184546 5
Introduccion A Linq 1205779028184546 5Introduccion A Linq 1205779028184546 5
Introduccion A Linq 1205779028184546 5google
 
Linq to sql 4
Linq to sql 4Linq to sql 4
Linq to sql 4jcfarit
 
Linq to sql 2
Linq to sql 2Linq to sql 2
Linq to sql 2jcfarit
 
Linq to sql 8
Linq to sql 8Linq to sql 8
Linq to sql 8jcfarit
 
Linq to sql 9
Linq to sql 9Linq to sql 9
Linq to sql 9jcfarit
 
Linq to sql 6
Linq to sql 6Linq to sql 6
Linq to sql 6jcfarit
 
Proveedores nativos
Proveedores nativosProveedores nativos
Proveedores nativosJosue Perez
 
Linq to sql 5
Linq to sql 5Linq to sql 5
Linq to sql 5jcfarit
 
Nuevas formas de pensar en datos con LINQ y Visual Studio 2008
Nuevas formas de pensar en datos con LINQ y Visual Studio 2008Nuevas formas de pensar en datos con LINQ y Visual Studio 2008
Nuevas formas de pensar en datos con LINQ y Visual Studio 2008juliocasal
 
Presentación4 modulos2008
Presentación4 modulos2008Presentación4 modulos2008
Presentación4 modulos2008keniameraris
 

Similar a Linq con visual studio 2008 (20)

Introduccion a-linq..www.freelibros.com
Introduccion a-linq..www.freelibros.comIntroduccion a-linq..www.freelibros.com
Introduccion a-linq..www.freelibros.com
 
Para Flor :P
Para Flor :PPara Flor :P
Para Flor :P
 
Linq to sql 3
Linq to sql 3Linq to sql 3
Linq to sql 3
 
13-Unidad 2. Operaciones Linq
 13-Unidad 2. Operaciones Linq 13-Unidad 2. Operaciones Linq
13-Unidad 2. Operaciones Linq
 
13-Unidad 3: Operaciones LINQ -3.1 Introducción 3.2 LINQ SELECT 3.3 LINQ INSERT
13-Unidad 3: Operaciones LINQ -3.1 Introducción 3.2 LINQ SELECT 3.3 LINQ INSERT13-Unidad 3: Operaciones LINQ -3.1 Introducción 3.2 LINQ SELECT 3.3 LINQ INSERT
13-Unidad 3: Operaciones LINQ -3.1 Introducción 3.2 LINQ SELECT 3.3 LINQ INSERT
 
Introduccion A Linq 1205779028184546 5
Introduccion A Linq 1205779028184546 5Introduccion A Linq 1205779028184546 5
Introduccion A Linq 1205779028184546 5
 
Linq to sql 4
Linq to sql 4Linq to sql 4
Linq to sql 4
 
Linq to sql 2
Linq to sql 2Linq to sql 2
Linq to sql 2
 
Linq to sql 8
Linq to sql 8Linq to sql 8
Linq to sql 8
 
Programación manuel crisostomo l
Programación manuel crisostomo lProgramación manuel crisostomo l
Programación manuel crisostomo l
 
Linq to sql 9
Linq to sql 9Linq to sql 9
Linq to sql 9
 
Linq to sql 6
Linq to sql 6Linq to sql 6
Linq to sql 6
 
Proveedores nativos
Proveedores nativosProveedores nativos
Proveedores nativos
 
Isangelt lo Hizo!!
Isangelt lo Hizo!!Isangelt lo Hizo!!
Isangelt lo Hizo!!
 
Morales .Net
Morales .NetMorales .Net
Morales .Net
 
Clase 5
Clase 5Clase 5
Clase 5
 
Linq to sql 5
Linq to sql 5Linq to sql 5
Linq to sql 5
 
Nuevas formas de pensar en datos con LINQ y Visual Studio 2008
Nuevas formas de pensar en datos con LINQ y Visual Studio 2008Nuevas formas de pensar en datos con LINQ y Visual Studio 2008
Nuevas formas de pensar en datos con LINQ y Visual Studio 2008
 
Presentación4 modulos2008
Presentación4 modulos2008Presentación4 modulos2008
Presentación4 modulos2008
 
java con base de datos
java con base de datos java con base de datos
java con base de datos
 

Último

Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 

Último (13)

Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 

Linq con visual studio 2008

  • 1. 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 T e 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 T e 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 sábado, 31 de enero de 2015
  • 2.  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
  • 3.  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)
  • 4.  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
  • 5.
  • 6.  La expresión básica de la consulta contiene tres clausulas SELECT – FROM – WHERE FROM especifica el origen de datos WHERE 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.
  • 7.  LINQ trabaja en base a consultas, por lo tanto todas las operaciones se componen de la siguiente manera: 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 Datos 2. Creación de la Consulta 3. Ejecución de la Consulta
  • 8. 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.
  • 9.  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
  • 10.  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.
  • 11.  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
  • 12. En la ilustración vemos el uso de la palabra clave var. Se genera el mismo código compilado en ambos casos
  • 13. LINQ to Objects LINQ to Xml LINQ to ADO .NET oLINQ to DataSet oLINQ to Entities oLINQ to SQL
  • 14.  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
  • 15.  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
  • 16.  LINQ to ADO .NET  Permite el acceso a datos ADO .NET usando la tecnología de LINQ  Se incluyen otras dos tecnologías LINQ to DataSet LINQ to SQL * Este será básicamente el tema que ampliaremos
  • 17.  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
  • 18.  LINQ to DataSet  Permite usar ADO .NET con LINQ
  • 19.  LINQ to DataSet  Simplificado mucho, llenamos el DataSet y después construimos y ejecutamos consultas LINQ sobre esos datos en memoria.
  • 20.  Ejemplo 1 LINQ to DataSet Este ejemplo utiliza Select para devolver todas las filas de la tabla Product y mostrar los nombres de producto. Proyecto: LINQ_to_DataSet1
  • 21.
  • 22.  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)
  • 23.  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
  • 24.  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
  • 25.  Ejemplo 2 LINQ to DataSet 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
  • 26.  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
  • 27.  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
  • 28.  LINQ to SQL – OR/Designer Visual Studio 2008 OR/Designer base de datos Northwind Proyecto: LINQ_to_SQL1
  • 29.  Ejemplo LINQ to SQL 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
  • 30.  Ejemplo LINQ to SQL 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
  • 31.  http://msdn.microsoft.com/es-es/library/bb386943.aspx  http://msdn.microsoft.com/en-us/library/bb308959.aspx  http://geeks.ms/blogs/mredison/archive/tags/LINQ/default. aspx  http://www.devjoker.com/contenidos/catss/326/LinQ-To- SQL--Un-ejemplo-sencillo.aspx  http://www.codeproject.com/KB/vista/LINQ_1.aspx
  • 32. 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