SlideShare una empresa de Scribd logo
1 de 28
Descargar para leer sin conexión
Nivel 200- Introducción




LINQ y el acceso a datos
 con Visual Basic 2008


                     Guillermo 'guille' Som
                      Solid Quality Mentors



           1
Agenda

• Un vistazo a LINQ
• Acceso a datos con LINQ




                        2
Un vistazo a LINQ

• Las variantes de LINQ
  • LINQ to Objects
  • LINQ to XML
  • LINQ to ADO.NET
     o LINQ to DataSet
     o LINQ to SQL




                          3
Un vistazo a LINQ
Visual Basic                    C#                      Otros…

                 .NET Language-Integrated Query

                     Fuentes de datos LINQ

                          LINQ to ADO.NET
 LINQ                                                     LINQ
                LINQ           LINQ           LINQ
  To                                                       To
                  To            To             To
Objects                                                   XML
               Datasets        SQL           Entities

                                                          <book>
                                                            <title/>
                                                            <author/>
                                                            <price/>
                                                          </book>

Objetos                     Relacional                     XML

                                 4
Un vistazo a LINQ

LINQ to Objects
• Permite acceder a datos en memoria usando la
 tecnología de LINQ
• La condición es que esos datos expongan
 IEnumerable o IEnumerable(Of T)
  •   Los arrays, colecciones, etc. cumplen esta condición




                                5
DEMO
LINQ to Objects




                  6
Un vistazo a LINQ

LINQ to XML
• Permite acceder a datos XML usando la
 tecnología de LINQ
• En VB9 se mejora de forma que se pueden usar
 literales de XML directamente en el código




                          7
Un vistazo a LINQ

LINQ to ADO.NET
• Permite acceder a datos de 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 de esta charla



                           9
Agenda

• Un vistazo a LINQ
• Acceso a datos con LINQ




                     10
Acceso a datos con LINQ y VB9

LINQ to DataSet
• Permite usar ADO.NET 2.0 con LINQ




                         11
Acceso a datos con LINQ y VB9

LINQ to DataSet
• Simplificando mucho:
• Llenamos el DataSet y después usamos LINQ
 para usar esos datos en memoria




                        12
Acceso a datos con LINQ y VB9

LINQ to DataSet
• Cuando tengamos los datos en el DataSet,
 usaremos LINQ para trabajar con ellos
 Dim ta As New NorthwindDataSetTableAdapters. _
                     CustomersTableAdapter
 Dim ds As New NorthwindDataSet
 ta.Fill(ds.Customers)

 Dim clientes = From cli In ds.Customers _
                Where cli.Country.StartsWith(quot;Uquot;) _
                Order By cli.ContactName _
                Select cli

 For Each c In clientes
     Console.WriteLine(quot;{0}, {1}quot;, c.ContactName, c.City)
 Next
                                   13
Acceso a datos con LINQ y VB9

• Es importante saber que 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)



                          14
Acceso a datos con LINQ y VB9

• Estos dos bucles mostrarán datos distintos, ya
 que se ha cambiado un dato que se incluye en la
 consulta
    Dim clientes = From cli In ds.Customers _
                   Where cli.Country.StartsWith(quot;Uquot;) _
                   Order By cli.ContactName _
                   Select cli

    For Each c In clientes
        Console.WriteLine(quot;{0}: {1}, {2}quot;, _
                           c.CustomerID, c.ContactName, c.Country)
    Next

    ds.Customers.Rows(18).Item(quot;Countryquot;) = quot;Spainquot;

    For Each c In clientes
        Console.WriteLine(quot;{0}: {1}, {2}quot;, _
                           c.CustomerID, c.ContactName, c.Country)
    Next

                                    15
Acceso a datos con LINQ y VB9

• Si queremos que la consulta solo se ejecute una
 vez o de forma inmediata, debemos usar algún
 método que la quot;lancequot; y la saque del estado
 quot;hibernadoquot; 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



                          16
Acceso a datos con LINQ y VB9

• El quot;trucoquot; 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 quot;refrescaráquot; la
 consulta


                           17
Acceso a datos con LINQ y VB9

• Estos dos bucles mostrarán los mismos clientes, a
 pesar de que se cambie el país de uno de ellos

    Dim clientes = (From cli In ds.Customers _
                   Where cli.Country.StartsWith(quot;Uquot;) _
                   Order By cli.ContactName _
                   Select cli).ToArray

    For Each c In clientes
        Console.WriteLine(quot;{0}: {1}, {2}quot;, _
                           c.CustomerID, c.ContactName, c.Country)
    Next

    ds.Customers.Rows(18).Item(quot;Countryquot;) = quot;Spainquot;

    For Each c In clientes
        Console.WriteLine(quot;{0}: {1}, {2}quot;, _
                           c.CustomerID, c.ContactName, c.Country)
    Next

                                    18
DEMO
Ejecución aplazada y ejecución inmediata




                                    19
Acceso a datos con LINQ y VB9

LINQ to SQL
• Las bases de datos relacionales con LINQ
  •   (por ahora solo se soporta SQL Server y SQL Server
      Compact 3.5)




                               20
Acceso a datos con LINQ y VB9

• Existe una relación entre los objetos de LINQ y
 los de la base de datos




    LINQ to SQL Object Model    Relational Data Model
    Entity class                Table
    Class member                Column
    Association                 Foreign-key relationship
    Method                      Stored Procedure or Function



                               21
Acceso a datos con LINQ y VB9

LINQ to SQL Entity Classes y las tablas
• Para ligar una tabla con una clase, definimos la
 clase y los campos a los que queremos acceder
  •   Se necesita una referencia a System.Data.Linq.dll e importar los espacios de nombres:
      System.Data.Linq.Mapping para los atributos y System.Data.Linq para el DataContext


      <Table(Name:=quot;Customersquot;)> _
      Public Class Customer
          <Column()> _
          Public CustomerID As String
          <Column()> _
          Public City As String
          <Column()> _
          Public ContactName As String
          <Column()> _
          Public Country As String
      End Class

                                                22
Acceso a datos con LINQ y VB9

• Por supuesto, solo podremos acceder a los
 campos que hayamos definido en la clase

    Dim sCnn = quot;Data Source = (local)SQLEXPRESS; quot; & _
               quot;Initial Catalog = Northwind; quot; & _
               quot;Integrated Security = Truequot;

    Dim dc As New DataContext(sCnn)
    Dim losClientes = dc.GetTable(Of Customer)()

    Dim q1 = From cli In losClientes _
             Where cli.Country.StartsWith(quot;Uquot;) _
             Order By cli.ContactName _
             Select cli

    For Each c In q1
        Console.WriteLine(quot;{0}: {1}, {2}quot;, _
                          c.CustomerID, c.ContactName, c.Country)
    Next


                                    23
DEMO
Acceso a datos con LINQ (manual)




                                   24
Acceso a datos con LINQ y VB9

• También podemos crear funciones para
 asociarlas a procedimientos almacenados y más
 cosas, pero lo más fácil es no tener que hacerlo a
 mano...
• Ya que podemos usar el O/R Designer
  •   O/R Designer = Object Relational Designer

• Con ese diseñador, crear clases, métodos y
 demás quot;moneríasquot; solo es cuestión de...
• ¡arrastrar y soltar!

                                       25
Acceso a datos con LINQ y VB9

• 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
• Es casi como los DataSet tipados, pero
 accediendo directamente a los objetos de la base
 de datos por medio de clases y métodos




                           26
Acceso a datos con LINQ y VB9




           27
DEMO
LINQ to SQL, OR / Designer




                             28
LINQ y el acceso a datos con VB 9.0




Guillermo ‘guille’ Som
mensaje@elguille.info
http://www.elguille.info/




                            29

Más contenido relacionado

Similar a Introducción a LINQ y acceso a datos con VB 2008

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
 
Aplicaciones escalables en la nube: mentiras y verdades
Aplicaciones escalables en la nube: mentiras y verdadesAplicaciones escalables en la nube: mentiras y verdades
Aplicaciones escalables en la nube: mentiras y verdadesEnrique Catala Bañuls
 
Linq con visual studio 2008
Linq con visual studio 2008Linq con visual studio 2008
Linq con visual studio 2008omicx
 
Sesion 01 - Introduccion a Net Framework
Sesion 01 - Introduccion a Net FrameworkSesion 01 - Introduccion a Net Framework
Sesion 01 - Introduccion a Net Frameworkeriveraa
 
Reactvolution
ReactvolutionReactvolution
Reactvolution_Lagash
 
Ejemplo Linq To SQL
Ejemplo Linq To SQLEjemplo Linq To SQL
Ejemplo Linq To SQLjcfarit
 
Programación de Base de Datos - Unidad II: Aplicaciones con Arquitectura Clie...
Programación de Base de Datos - Unidad II: Aplicaciones con Arquitectura Clie...Programación de Base de Datos - Unidad II: Aplicaciones con Arquitectura Clie...
Programación de Base de Datos - Unidad II: Aplicaciones con Arquitectura Clie...José Antonio Sandoval Acosta
 
D I F E R E N C I A S E N T R E V I S U A L Y C
D I F E R E N C I A S  E N T R E  V I S U A L  Y  CD I F E R E N C I A S  E N T R E  V I S U A L  Y  C
D I F E R E N C I A S E N T R E V I S U A L Y Cguest109254
 
Dce0 programacion oo_c__vbnet
Dce0 programacion oo_c__vbnetDce0 programacion oo_c__vbnet
Dce0 programacion oo_c__vbnetvictdiazm
 
No SQL MSATS MongoDB | SolidQ Summit 2014
No SQL MSATS MongoDB | SolidQ Summit 2014No SQL MSATS MongoDB | SolidQ Summit 2014
No SQL MSATS MongoDB | SolidQ Summit 2014SolidQ
 
Tópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datosTópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datosJosé Antonio Sandoval Acosta
 
Pon tus aplicaciones a 100 con redis
Pon tus aplicaciones a 100 con redisPon tus aplicaciones a 100 con redis
Pon tus aplicaciones a 100 con redisDaniel Mazzini
 
Introduccion a LINQ
Introduccion a LINQIntroduccion a LINQ
Introduccion a LINQTonymx
 
Linq to sql 7
Linq to sql 7Linq to sql 7
Linq to sql 7jcfarit
 

Similar a Introducción a LINQ y acceso a datos con VB 2008 (20)

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
 
Odbc
OdbcOdbc
Odbc
 
Aplicaciones escalables en la nube: mentiras y verdades
Aplicaciones escalables en la nube: mentiras y verdadesAplicaciones escalables en la nube: mentiras y verdades
Aplicaciones escalables en la nube: mentiras y verdades
 
Linq con visual studio 2008
Linq con visual studio 2008Linq con visual studio 2008
Linq con visual studio 2008
 
Sesion 01 - Introduccion a Net Framework
Sesion 01 - Introduccion a Net FrameworkSesion 01 - Introduccion a Net Framework
Sesion 01 - Introduccion a Net Framework
 
Reactvolution
ReactvolutionReactvolution
Reactvolution
 
Ejemplo Linq To SQL
Ejemplo Linq To SQLEjemplo Linq To SQL
Ejemplo Linq To SQL
 
Vb net
Vb netVb net
Vb net
 
Programación de Base de Datos - Unidad II: Aplicaciones con Arquitectura Clie...
Programación de Base de Datos - Unidad II: Aplicaciones con Arquitectura Clie...Programación de Base de Datos - Unidad II: Aplicaciones con Arquitectura Clie...
Programación de Base de Datos - Unidad II: Aplicaciones con Arquitectura Clie...
 
D I F E R E N C I A S E N T R E V I S U A L Y C
D I F E R E N C I A S  E N T R E  V I S U A L  Y  CD I F E R E N C I A S  E N T R E  V I S U A L  Y  C
D I F E R E N C I A S E N T R E V I S U A L Y C
 
Dce0 programacion oo_c__vbnet
Dce0 programacion oo_c__vbnetDce0 programacion oo_c__vbnet
Dce0 programacion oo_c__vbnet
 
No SQL MSATS MongoDB | SolidQ Summit 2014
No SQL MSATS MongoDB | SolidQ Summit 2014No SQL MSATS MongoDB | SolidQ Summit 2014
No SQL MSATS MongoDB | SolidQ Summit 2014
 
S4-PD1-2.2 EF
S4-PD1-2.2 EFS4-PD1-2.2 EF
S4-PD1-2.2 EF
 
Linq - Introducción
Linq - IntroducciónLinq - Introducción
Linq - Introducción
 
Framework .NET 3.5 10 Linq
Framework .NET 3.5 10 LinqFramework .NET 3.5 10 Linq
Framework .NET 3.5 10 Linq
 
Tópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datosTópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datos
 
Ado.net
Ado.netAdo.net
Ado.net
 
Pon tus aplicaciones a 100 con redis
Pon tus aplicaciones a 100 con redisPon tus aplicaciones a 100 con redis
Pon tus aplicaciones a 100 con redis
 
Introduccion a LINQ
Introduccion a LINQIntroduccion a LINQ
Introduccion a LINQ
 
Linq to sql 7
Linq to sql 7Linq to sql 7
Linq to sql 7
 

Más de kayrambal

SerializacióN Part 2
SerializacióN Part 2SerializacióN Part 2
SerializacióN Part 2kayrambal
 
Open And Reading Files
Open And Reading FilesOpen And Reading Files
Open And Reading Fileskayrambal
 
Navigating The File System
Navigating The File SystemNavigating The File System
Navigating The File Systemkayrambal
 
Conversion Entre Tipos Leccion 4
Conversion Entre Tipos   Leccion 4Conversion Entre Tipos   Leccion 4
Conversion Entre Tipos Leccion 4kayrambal
 
Navegar Sistema De Archivos
Navegar Sistema De ArchivosNavegar Sistema De Archivos
Navegar Sistema De Archivoskayrambal
 
Trucos Y Efectos[1]
Trucos Y Efectos[1]Trucos Y Efectos[1]
Trucos Y Efectos[1]kayrambal
 

Más de kayrambal (8)

SerializacióN Part 2
SerializacióN Part 2SerializacióN Part 2
SerializacióN Part 2
 
Open And Reading Files
Open And Reading FilesOpen And Reading Files
Open And Reading Files
 
Navigating The File System
Navigating The File SystemNavigating The File System
Navigating The File System
 
Atributos
AtributosAtributos
Atributos
 
Conversion Entre Tipos Leccion 4
Conversion Entre Tipos   Leccion 4Conversion Entre Tipos   Leccion 4
Conversion Entre Tipos Leccion 4
 
Navegar Sistema De Archivos
Navegar Sistema De ArchivosNavegar Sistema De Archivos
Navegar Sistema De Archivos
 
Trucos Y Efectos[1]
Trucos Y Efectos[1]Trucos Y Efectos[1]
Trucos Y Efectos[1]
 
Web2.0
Web2.0Web2.0
Web2.0
 

Último

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
 
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
 
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
 
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
 
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
 
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
 
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
 
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
 
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
 
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
 

Último (10)

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
 
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
 
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
 
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
 
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
 
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...
 
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
 
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
 
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
 
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)
 

Introducción a LINQ y acceso a datos con VB 2008

  • 1. Nivel 200- Introducción LINQ y el acceso a datos con Visual Basic 2008 Guillermo 'guille' Som Solid Quality Mentors 1
  • 2. Agenda • Un vistazo a LINQ • Acceso a datos con LINQ 2
  • 3. Un vistazo a LINQ • Las variantes de LINQ • LINQ to Objects • LINQ to XML • LINQ to ADO.NET o LINQ to DataSet o LINQ to SQL 3
  • 4. Un vistazo a LINQ Visual Basic C# Otros… .NET Language-Integrated Query Fuentes de datos LINQ LINQ to ADO.NET LINQ LINQ LINQ LINQ LINQ To To To To To Objects XML Datasets SQL Entities <book> <title/> <author/> <price/> </book> Objetos Relacional XML 4
  • 5. Un vistazo a LINQ LINQ to Objects • Permite acceder a datos en memoria usando la tecnología de LINQ • La condición es que esos datos expongan IEnumerable o IEnumerable(Of T) • Los arrays, colecciones, etc. cumplen esta condición 5
  • 7. Un vistazo a LINQ LINQ to XML • Permite acceder a datos XML usando la tecnología de LINQ • En VB9 se mejora de forma que se pueden usar literales de XML directamente en el código 7
  • 8. Un vistazo a LINQ LINQ to ADO.NET • Permite acceder a datos de 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 de esta charla 9
  • 9. Agenda • Un vistazo a LINQ • Acceso a datos con LINQ 10
  • 10. Acceso a datos con LINQ y VB9 LINQ to DataSet • Permite usar ADO.NET 2.0 con LINQ 11
  • 11. Acceso a datos con LINQ y VB9 LINQ to DataSet • Simplificando mucho: • Llenamos el DataSet y después usamos LINQ para usar esos datos en memoria 12
  • 12. Acceso a datos con LINQ y VB9 LINQ to DataSet • Cuando tengamos los datos en el DataSet, usaremos LINQ para trabajar con ellos Dim ta As New NorthwindDataSetTableAdapters. _ CustomersTableAdapter Dim ds As New NorthwindDataSet ta.Fill(ds.Customers) Dim clientes = From cli In ds.Customers _ Where cli.Country.StartsWith(quot;Uquot;) _ Order By cli.ContactName _ Select cli For Each c In clientes Console.WriteLine(quot;{0}, {1}quot;, c.ContactName, c.City) Next 13
  • 13. Acceso a datos con LINQ y VB9 • Es importante saber que 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) 14
  • 14. Acceso a datos con LINQ y VB9 • Estos dos bucles mostrarán datos distintos, ya que se ha cambiado un dato que se incluye en la consulta Dim clientes = From cli In ds.Customers _ Where cli.Country.StartsWith(quot;Uquot;) _ Order By cli.ContactName _ Select cli For Each c In clientes Console.WriteLine(quot;{0}: {1}, {2}quot;, _ c.CustomerID, c.ContactName, c.Country) Next ds.Customers.Rows(18).Item(quot;Countryquot;) = quot;Spainquot; For Each c In clientes Console.WriteLine(quot;{0}: {1}, {2}quot;, _ c.CustomerID, c.ContactName, c.Country) Next 15
  • 15. Acceso a datos con LINQ y VB9 • Si queremos que la consulta solo se ejecute una vez o de forma inmediata, debemos usar algún método que la quot;lancequot; y la saque del estado quot;hibernadoquot; 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 16
  • 16. Acceso a datos con LINQ y VB9 • El quot;trucoquot; 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 quot;refrescaráquot; la consulta 17
  • 17. Acceso a datos con LINQ y VB9 • Estos dos bucles mostrarán los mismos clientes, a pesar de que se cambie el país de uno de ellos Dim clientes = (From cli In ds.Customers _ Where cli.Country.StartsWith(quot;Uquot;) _ Order By cli.ContactName _ Select cli).ToArray For Each c In clientes Console.WriteLine(quot;{0}: {1}, {2}quot;, _ c.CustomerID, c.ContactName, c.Country) Next ds.Customers.Rows(18).Item(quot;Countryquot;) = quot;Spainquot; For Each c In clientes Console.WriteLine(quot;{0}: {1}, {2}quot;, _ c.CustomerID, c.ContactName, c.Country) Next 18
  • 18. DEMO Ejecución aplazada y ejecución inmediata 19
  • 19. Acceso a datos con LINQ y VB9 LINQ to SQL • Las bases de datos relacionales con LINQ • (por ahora solo se soporta SQL Server y SQL Server Compact 3.5) 20
  • 20. Acceso a datos con LINQ y VB9 • Existe una relación entre los objetos de LINQ y los de la base de datos LINQ to SQL Object Model Relational Data Model Entity class Table Class member Column Association Foreign-key relationship Method Stored Procedure or Function 21
  • 21. Acceso a datos con LINQ y VB9 LINQ to SQL Entity Classes y las tablas • Para ligar una tabla con una clase, definimos la clase y los campos a los que queremos acceder • Se necesita una referencia a System.Data.Linq.dll e importar los espacios de nombres: System.Data.Linq.Mapping para los atributos y System.Data.Linq para el DataContext <Table(Name:=quot;Customersquot;)> _ Public Class Customer <Column()> _ Public CustomerID As String <Column()> _ Public City As String <Column()> _ Public ContactName As String <Column()> _ Public Country As String End Class 22
  • 22. Acceso a datos con LINQ y VB9 • Por supuesto, solo podremos acceder a los campos que hayamos definido en la clase Dim sCnn = quot;Data Source = (local)SQLEXPRESS; quot; & _ quot;Initial Catalog = Northwind; quot; & _ quot;Integrated Security = Truequot; Dim dc As New DataContext(sCnn) Dim losClientes = dc.GetTable(Of Customer)() Dim q1 = From cli In losClientes _ Where cli.Country.StartsWith(quot;Uquot;) _ Order By cli.ContactName _ Select cli For Each c In q1 Console.WriteLine(quot;{0}: {1}, {2}quot;, _ c.CustomerID, c.ContactName, c.Country) Next 23
  • 23. DEMO Acceso a datos con LINQ (manual) 24
  • 24. Acceso a datos con LINQ y VB9 • También podemos crear funciones para asociarlas a procedimientos almacenados y más cosas, pero lo más fácil es no tener que hacerlo a mano... • Ya que podemos usar el O/R Designer • O/R Designer = Object Relational Designer • Con ese diseñador, crear clases, métodos y demás quot;moneríasquot; solo es cuestión de... • ¡arrastrar y soltar! 25
  • 25. Acceso a datos con LINQ y VB9 • 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 • Es casi como los DataSet tipados, pero accediendo directamente a los objetos de la base de datos por medio de clases y métodos 26
  • 26. Acceso a datos con LINQ y VB9 27
  • 27. DEMO LINQ to SQL, OR / Designer 28
  • 28. LINQ y el acceso a datos con VB 9.0 Guillermo ‘guille’ Som mensaje@elguille.info http://www.elguille.info/ 29