Nivel 200- Introducción




LINQ y el acceso a datos
 con Visual Basic 2008


                     Guillermo 'guille' Som
...
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
...
Un vistazo a LINQ
Visual Basic                    C#                      Otros…

                 .NET Language-Integrate...
Un vistazo a LINQ

LINQ to Objects
• Permite acceder a datos en memoria usando la
 tecnología de LINQ
• La condición es qu...
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...
Un vistazo a LINQ

LINQ to ADO.NET
• Permite acceder a datos de ADO.NET usando la
 tecnología de LINQ
• Se incluyen otras ...
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 us...
Acceso a datos con LINQ y VB9

LINQ to DataSet
• Cuando tengamos los datos en el DataSet,
 usaremos LINQ para trabajar con...
Acceso a datos con LINQ y VB9

• Es importante saber que LINQ mantiene la
 consulta en la variable usada
• Cada vez que us...
Acceso a datos con LINQ y VB9

• Estos dos bucles mostrarán datos distintos, ya
 que se ha cambiado un dato que se incluye...
Acceso a datos con LINQ y VB9

• Si queremos que la consulta solo se ejecute una
 vez o de forma inmediata, debemos usar a...
Acceso a datos con LINQ y VB9

• El quot;trucoquot; es asignar esos datos a una variable
 usando el método ToArray
  • Tam...
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 ...
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...
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 ...
Acceso a datos con LINQ y VB9

LINQ to SQL Entity Classes y las tablas
• Para ligar una tabla con una clase, definimos la
...
Acceso a datos con LINQ y VB9

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

    D...
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
 cosa...
Acceso a datos con LINQ y VB9

• Con el diseñador de objetos relacionales,
 arrastraremos las clases y los procedimientos
...
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/




       ...
Upcoming SlideShare
Loading in …5
×

Linq En Visual Basic 2008

3,470 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,470
On SlideShare
0
From Embeds
0
Number of Embeds
30
Actions
Shares
0
Downloads
226
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Linq En Visual Basic 2008

  1. 1. Nivel 200- Introducción LINQ y el acceso a datos con Visual Basic 2008 Guillermo 'guille' Som Solid Quality Mentors 1
  2. 2. Agenda • Un vistazo a LINQ • Acceso a datos con LINQ 2
  3. 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. 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. 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
  6. 6. DEMO LINQ to Objects 6
  7. 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. 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. 9. Agenda • Un vistazo a LINQ • Acceso a datos con LINQ 10
  10. 10. Acceso a datos con LINQ y VB9 LINQ to DataSet • Permite usar ADO.NET 2.0 con LINQ 11
  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. 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. 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. 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. 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. 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. 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. 18. DEMO Ejecución aplazada y ejecución inmediata 19
  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. 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. 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. 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. 23. DEMO Acceso a datos con LINQ (manual) 24
  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. 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. 26. Acceso a datos con LINQ y VB9 27
  27. 27. DEMO LINQ to SQL, OR / Designer 28
  28. 28. LINQ y el acceso a datos con VB 9.0 Guillermo ‘guille’ Som mensaje@elguille.info http://www.elguille.info/ 29

×