Nuevas Formas de Pensar en Datos con LINQ y Visual Studio 2008<br />Julio Casal<br />Software Developer<br />John Galt Sol...
Qué Veremos Hoy?<br />La filosofía de LINQ<br />Sintaxis para queries LINQ<br />Queries sobre colección en memory<br />Acc...
Nivel 200<br />Experiencia Previa<br />C# ó VB Intermedio<br />Sintaxis para queries SQL<br />Habilidades XML intermedias<...
Agenda<br />Acceso a Datos en Evolución<br />Entendiendo LINQ to SQL<br />Entendiendo LINQ to XML<br />Explorando LINQ y X...
Data…es nuestro trabajo<br />Consultar y manipulardatossiempre ha sidouna parte fundamental de nuestrostrabajoscomodesarro...
USE empl<br /> REPLACE ALL salary WITH (salary * 1.1) FOR supervises > 0 <br /> LIST ALL fname, lname, salary FOR Supervis...
Teníalimitaciones, pero era útil</li></li></ul><li>APIs de Acceso a Datos(finales de 1990s/inicios de 2000s)<br />SqlComma...
Mapeo Objecto / Relacional(en los últimos años)<br />  public class Employee {<br />      public string FirstName;<br />  ...
Integraciónmásclara de reglas de negocio y validaciones</li></li></ul><li>Pero Aún Existen Retos…<br />Cómotraerdatos no-r...
LINQ<br />Operaciones de Consultas, Asignación y Transformaciónpara .NET<br />Convierte a la consulta de datos un concepto...
Queries integrados en el código(C#/VB)<br />Qué es LINQ?<br />Tipos fuertes<br />Beneficios del IntelliSense<br />Coleccio...
Términos y Características<br />Inferencia de Tipos<br />TiposAnónimos<br />Expresiones Lambda<br />Métodos de Extensión<b...
QueryExpressions<br />SELECT c.FullName, Age = getdate() – c.BirthDay<br />FROM Customers c<br />WHERE c.BirthDay = getdat...
demo<br />De C# 2.0 a  LINQ<br />
Agenda<br />Acceso a Datos en Evolución<br />Entendiendo LINQ to SQL<br />Entendiendo LINQ to XML<br />Explorando LINQ y X...
LINQ to SQL<br />Generación implícita de queries<br />Generación explícita de queries<br />Soporte completo a CRUD<br />
Mapeando los Datos<br />Filas como objetos de negocio<br />Tablas como colecciones<br />Bases de Datos como DataContext<br...
demo<br />ExplorandoLINQ to SQL<br />
Agenda<br />Acceso a Datos en Evolución<br />Entendiendo LINQ to SQL<br />Entendiendo LINQ to XML<br />Explorando LINQ y X...
Beneficios de LINQ to XML<br />No hay barrera conceptual XML vs. code<br />Aprovecha experiencia con DOM<br />Facilita los...
Objetos de Ayuda LINQ to XML<br />XDocument<br />XNamespace<br />XComment<br />XElement<br />XAttribute<br />
demo<br />Trabajando con Datos XML<br />
Agenda<br />Acceso a Datos en Evolución<br />Entendiendo LINQ to SQL<br />Entendiendo LINQ to XML<br />Explorando LINQ y X...
Nuevas Características de VB<br />Dim x = 5<br />Variables locales implícitas<br />Métodos de extensión<br />Inicializador...
Beneficios de VB con LINQ to XML<br />Literales XML<br />Dim doc = <root><results/></root><br />If doc.<results>.Count() >...
demo<br />Trabajando con XML, VB y ASP.NET<br />
Resumen<br />LINQ habilitaacceso a datosdeclarativo<br />Los queries son ahora parte del lenguaje<br />Unifica acceso a da...
Publicaciones relacionadas con LINQ<br />Más en:<br />www.microsoft.com/learning/books<br />
Quieres saber más?<br />Centro de información de LINQ<br />http://msdn.microsoft.com/data/ref/linq<br />El blog másdidácti...
Preguntas?<br />
Nuevas formas de pensar en datos con LINQ y Visual Studio 2008
Upcoming SlideShare
Loading in …5
×

Nuevas formas de pensar en datos con LINQ y Visual Studio 2008

1,519 views
1,441 views

Published on

Introduction to LINQ and how to use it from Visual Studio 2008

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,519
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
73
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Nuevas formas de pensar en datos con LINQ y Visual Studio 2008

  1. 1. Nuevas Formas de Pensar en Datos con LINQ y Visual Studio 2008<br />Julio Casal<br />Software Developer<br />John Galt Solutions<br />
  2. 2. Qué Veremos Hoy?<br />La filosofía de LINQ<br />Sintaxis para queries LINQ<br />Queries sobre colección en memory<br />Acceso a bases de datos<br />Integración XML<br />
  3. 3. Nivel 200<br />Experiencia Previa<br />C# ó VB Intermedio<br />Sintaxis para queries SQL<br />Habilidades XML intermedias<br />
  4. 4. Agenda<br />Acceso a Datos en Evolución<br />Entendiendo LINQ to SQL<br />Entendiendo LINQ to XML<br />Explorando LINQ y XML en VB<br />
  5. 5. Data…es nuestro trabajo<br />Consultar y manipulardatossiempre ha sidouna parte fundamental de nuestrostrabajoscomodesarrolladores<br />El formato de los datos cambia, perolasnecesidades clave son lasmismas<br />
  6. 6. USE empl<br /> REPLACE ALL salary WITH (salary * 1.1) FOR supervises > 0 <br /> LIST ALL fname, lname, salary FOR Supervises > 0<br />Data Access(DBASE 1980s)<br /><ul><li>La consulta y manipulación de datosesuna pate fundamental de la experiencia en el modelo de programación
  7. 7. Teníalimitaciones, pero era útil</li></li></ul><li>APIs de Acceso a Datos(finales de 1990s/inicios de 2000s)<br />SqlCommandcmd = new SqlCommand(<br /> @"SELECT fname, lname, salary<br /> FROM Empl<br /> WHERE supervises > @p0"<br />);<br />cmd.Parameters.AddWithValue("@po", 0);<br />SqlConnection c = new SqlConnection(…);<br />c.Open(); <br />DataReaderpeople = c.Execute(cmd); <br /> while (people.Read()) {<br /> string fname = (string) people[“fname”];<br /> string lname = (string) people[“lname”];<br />double salary = (double) people[“salary”];<br /> }<br />dr.Close();<br />
  8. 8. Mapeo Objecto / Relacional(en los últimos años)<br /> public class Employee {<br /> public string FirstName;<br /> public string LastName;<br /> public double Salaray;<br /> }<br />IList employees = session.CreateCriteria(typeof(Employee)) <br /> .Add(Expression.Gt(“supervises", 0)<br /> .List(); <br />foreach(Employee employee in employees) { <br /> string fname = employee.FirstName;<br /> string lname = employee.LastName;<br /> double salary = employee.Salary;<br /> }<br /><ul><li>Mapeadatosrelacionaleshacia/desdeobjetos
  9. 9. Integraciónmásclara de reglas de negocio y validaciones</li></li></ul><li>Pero Aún Existen Retos…<br />Cómotraerdatos no-relacionales?<br />XML, RSS, Web Services, REST, AD, Files, etc.<br />Cómointeractuar con objetosplanos?<br />Cómointeractura y consultarmodelos de dominiopersonalizado?<br />Cómopermitirdarle forma y transformar los datos?<br />Soportar composición flexible de queries<br />Cómopermitiresto con códigolimpio en un mundotantotipificadocomodinámico?<br />
  10. 10. LINQ<br />Operaciones de Consultas, Asignación y Transformaciónpara .NET<br />Convierte a la consulta de datos un concepto de programación fundamental<br />Trabaja con todos los tipos y formas de datos<br />Bases de datos relacionales<br />XML<br />Objetos Planos<br />Trabaja con todos los lenguajes .NET<br />Las nuevas versiones de VB y C# tienen soporte integrado en el lenguaje<br />
  11. 11. Queries integrados en el código(C#/VB)<br />Qué es LINQ?<br />Tipos fuertes<br />Beneficios del IntelliSense<br />Colecciones de objects<br />Datosrelacionales<br />XML<br />Queries Unificados<br />Language INtegratedQueries<br />
  12. 12. Términos y Características<br />Inferencia de Tipos<br />TiposAnónimos<br />Expresiones Lambda<br />Métodos de Extensión<br />Dos sintaxispara queries<br />QueryExpression<br />MethodQueries<br />
  13. 13. QueryExpressions<br />SELECT c.FullName, Age = getdate() – c.BirthDay<br />FROM Customers c<br />WHERE c.BirthDay = getdate()<br />ORDER BY c.BirthDay<br />var todaysBirthday =<br /> from c in db.Customers<br /> where c.BirthDay == DateTime.Today<br /> orderby c.BirthDay<br /> select new {<br /> c.FullName, Age = DateTime.Today – c.BirthDay };<br />
  14. 14. demo<br />De C# 2.0 a LINQ<br />
  15. 15. Agenda<br />Acceso a Datos en Evolución<br />Entendiendo LINQ to SQL<br />Entendiendo LINQ to XML<br />Explorando LINQ y XML en VB<br />
  16. 16. LINQ to SQL<br />Generación implícita de queries<br />Generación explícita de queries<br />Soporte completo a CRUD<br />
  17. 17. Mapeando los Datos<br />Filas como objetos de negocio<br />Tablas como colecciones<br />Bases de Datos como DataContext<br />Base de Datos<br />DataContext<br />Tabla<br />Colección<br />
  18. 18. demo<br />ExplorandoLINQ to SQL<br />
  19. 19. Agenda<br />Acceso a Datos en Evolución<br />Entendiendo LINQ to SQL<br />Entendiendo LINQ to XML<br />Explorando LINQ y XML en VB<br />
  20. 20. Beneficios de LINQ to XML<br />No hay barrera conceptual XML vs. code<br />Aprovecha experiencia con DOM<br />Facilita los requerimientos de compatibilidad<br />
  21. 21. Objetos de Ayuda LINQ to XML<br />XDocument<br />XNamespace<br />XComment<br />XElement<br />XAttribute<br />
  22. 22. demo<br />Trabajando con Datos XML<br />
  23. 23. Agenda<br />Acceso a Datos en Evolución<br />Entendiendo LINQ to SQL<br />Entendiendo LINQ to XML<br />Explorando LINQ y XML en VB<br />
  24. 24. Nuevas Características de VB<br />Dim x = 5<br />Variables locales implícitas<br />Métodos de extensión<br />Inicializadores de objetos<br />Tipos anónimos<br />Expresiones de Queries<br /><Extension()> _<br /> Sub Rand (col As IEnumerable)<br />New Point With { .x = 1, .y = 2 }<br />New With { c.Name, c.Phone }<br />From … Where … Select<br />
  25. 25. Beneficios de VB con LINQ to XML<br />Literales XML<br />Dim doc = <root><results/></root><br />If doc.<results>.Count() > 5 Then …<br />Console.WriteLine(<book>.@name)<br />Propiedades XML<br />Namespaces Importados<br />Imports <xmlns:ns=http://testuri.org”><br />
  26. 26. demo<br />Trabajando con XML, VB y ASP.NET<br />
  27. 27. Resumen<br />LINQ habilitaacceso a datosdeclarativo<br />Los queries son ahora parte del lenguaje<br />Unifica acceso a datos entre orígenes de datos<br />
  28. 28. Publicaciones relacionadas con LINQ<br />Más en:<br />www.microsoft.com/learning/books<br />
  29. 29. Quieres saber más?<br />Centro de información de LINQ<br />http://msdn.microsoft.com/data/ref/linq<br />El blog másdidácticosobre LINQ y VS 2008<br />http://weblogs.asp.net/scottgu<br />Blogs de los creadores<br />http://blogs.msdn.com/adonet<br />http://blogs.msdn.com/data<br />Mi blog<br />http://msguayaquil.com/blogs/julioc<br />
  30. 30. Preguntas?<br />

×