nuevas formas de pensar en datos con linq y visual studio 2008
DESCRIPTION
Introduction to LINQ and how to use it from Visual Studio 2008TRANSCRIPT
![Page 1: Nuevas formas de pensar en datos con LINQ y Visual Studio 2008](https://reader035.vdocuments.site/reader035/viewer/2022062312/554ebde0b4c905064d8b470d/html5/thumbnails/1.jpg)
Nuevas Formas de Pensar en Datos con LINQ y Visual Studio 2008
Julio CasalSoftware DeveloperJohn Galt Solutions
![Page 2: Nuevas formas de pensar en datos con LINQ y Visual Studio 2008](https://reader035.vdocuments.site/reader035/viewer/2022062312/554ebde0b4c905064d8b470d/html5/thumbnails/2.jpg)
Qué Veremos Hoy?
La filosofía de LINQSintaxis para queries LINQQueries sobre colección en memoryAcceso a bases de datosIntegración XML
![Page 3: Nuevas formas de pensar en datos con LINQ y Visual Studio 2008](https://reader035.vdocuments.site/reader035/viewer/2022062312/554ebde0b4c905064d8b470d/html5/thumbnails/3.jpg)
Nivel 200
Experiencia Previa
C# ó VB IntermedioSintaxis para queries SQLHabilidades XML intermedias
![Page 4: Nuevas formas de pensar en datos con LINQ y Visual Studio 2008](https://reader035.vdocuments.site/reader035/viewer/2022062312/554ebde0b4c905064d8b470d/html5/thumbnails/4.jpg)
Agenda
Acceso a Datos en EvoluciónEntendiendo LINQ to SQLEntendiendo LINQ to XMLExplorando LINQ y XML en VB
![Page 5: Nuevas formas de pensar en datos con LINQ y Visual Studio 2008](https://reader035.vdocuments.site/reader035/viewer/2022062312/554ebde0b4c905064d8b470d/html5/thumbnails/5.jpg)
Data…es nuestro trabajo
Consultar y manipular datos siempre ha sido una parte fundamental de nuestros trabajos como desarrolladores
El formato de los datos cambia, pero las necesidades clave son las mismas
![Page 6: Nuevas formas de pensar en datos con LINQ y Visual Studio 2008](https://reader035.vdocuments.site/reader035/viewer/2022062312/554ebde0b4c905064d8b470d/html5/thumbnails/6.jpg)
USE empl
REPLACE ALL salary WITH (salary * 1.1) FOR supervises > 0
LIST ALL fname, lname, salary FOR Supervises > 0
Data Access(DBASE 1980s)
• La consulta y manipulación de datos es una pate fundamental de la experiencia en el modelo de programación
• Tenía limitaciones, pero era útil
![Page 7: Nuevas formas de pensar en datos con LINQ y Visual Studio 2008](https://reader035.vdocuments.site/reader035/viewer/2022062312/554ebde0b4c905064d8b470d/html5/thumbnails/7.jpg)
SqlCommand cmd = new SqlCommand( @"SELECT fname, lname, salary
FROM Empl WHERE supervises > @p0"
);
cmd.Parameters.AddWithValue("@po", 0);
SqlConnection c = new SqlConnection(…); c.Open(); DataReader people = c.Execute(cmd);
while (people.Read()) { string fname = (string) people[“fname”]; string lname = (string) people[“lname”]; double salary = (double) people[“salary”]; } dr.Close();
APIs de Acceso a Datos(finales de 1990s/inicios de 2000s)
![Page 8: Nuevas formas de pensar en datos con LINQ y Visual Studio 2008](https://reader035.vdocuments.site/reader035/viewer/2022062312/554ebde0b4c905064d8b470d/html5/thumbnails/8.jpg)
Mapeo Objecto / Relacional(en los últimos años)
public class Employee { public string FirstName; public string LastName; public double Salaray; } IList employees = session.CreateCriteria(typeof(Employee)) .Add(Expression.Gt(“supervises", 0) .List();
foreach(Employee employee in employees) { string fname = employee.FirstName; string lname = employee.LastName; double salary = employee.Salary; }
• Mapea datos relacionales hacia/desde objetos• Integración más clara de reglas de negocio y
validaciones
![Page 9: Nuevas formas de pensar en datos con LINQ y Visual Studio 2008](https://reader035.vdocuments.site/reader035/viewer/2022062312/554ebde0b4c905064d8b470d/html5/thumbnails/9.jpg)
Pero Aún Existen Retos…
Cómo traer datos no-relacionales?XML, RSS, Web Services, REST, AD, Files, etc.
Cómo interactuar con objetos planos?Cómo interactura y consultar modelos de dominio personalizado?
Cómo permitir darle forma y transformar los datos?Soportar composición flexible de queries
Cómo permitir esto con código limpio en un mundo tanto tipificado como dinámico?
![Page 10: Nuevas formas de pensar en datos con LINQ y Visual Studio 2008](https://reader035.vdocuments.site/reader035/viewer/2022062312/554ebde0b4c905064d8b470d/html5/thumbnails/10.jpg)
LINQ
Operaciones de Consultas, Asignación y Transformación para .NET
Convierte a la consulta de datos un concepto de programación fundamental
Trabaja con todos los tipos y formas de datosBases de datos relacionalesXMLObjetos Planos
Trabaja con todos los lenguajes .NETLas nuevas versiones de VB y C# tienen soporte integrado en el lenguaje
![Page 11: Nuevas formas de pensar en datos con LINQ y Visual Studio 2008](https://reader035.vdocuments.site/reader035/viewer/2022062312/554ebde0b4c905064d8b470d/html5/thumbnails/11.jpg)
Qué es LINQ?
Tipos fuertesBeneficios del IntelliSense
Language INtegrated Queries
Colecciones de objectsDatos relacionalesXML
Queries integrados en el código (C#/VB)
Queries Unificados
![Page 12: Nuevas formas de pensar en datos con LINQ y Visual Studio 2008](https://reader035.vdocuments.site/reader035/viewer/2022062312/554ebde0b4c905064d8b470d/html5/thumbnails/12.jpg)
Términos y Características
Query Expression
Method Queries
Inferencia de Tipos
Tipos Anónimos
Expresiones Lambda
Dos sintaxis para queries
Métodos de Extensión
![Page 13: Nuevas formas de pensar en datos con LINQ y Visual Studio 2008](https://reader035.vdocuments.site/reader035/viewer/2022062312/554ebde0b4c905064d8b470d/html5/thumbnails/13.jpg)
Project Select <expr>
Filter Where <expr>, Distinct
Order Order By <expr>, <expr> [ Ascending | Descending ]
Aggregate
Count([<expr>]), Sum(<expr>), Min(<expr>), Max(<expr>), Avg(<expr>)
Query Expressions
var todaysBirthday =from c in db.Customerswhere c.BirthDay == DateTime.Today
orderby c.BirthDayselect new {
c.FullName, Age = DateTime.Today – c.BirthDay };
SELECT c.FullName, Age = getdate() – c.BirthDayFROM Customers cWHERE c.BirthDay = getdate()ORDER BY c.BirthDay
![Page 14: Nuevas formas de pensar en datos con LINQ y Visual Studio 2008](https://reader035.vdocuments.site/reader035/viewer/2022062312/554ebde0b4c905064d8b470d/html5/thumbnails/14.jpg)
DEMODe C# 2.0 a LINQ
![Page 15: Nuevas formas de pensar en datos con LINQ y Visual Studio 2008](https://reader035.vdocuments.site/reader035/viewer/2022062312/554ebde0b4c905064d8b470d/html5/thumbnails/15.jpg)
Agenda
Acceso a Datos en EvoluciónEntendiendo LINQ to SQLEntendiendo LINQ to XMLExplorando LINQ y XML en VB
![Page 16: Nuevas formas de pensar en datos con LINQ y Visual Studio 2008](https://reader035.vdocuments.site/reader035/viewer/2022062312/554ebde0b4c905064d8b470d/html5/thumbnails/16.jpg)
LINQ to SQL
Generación implícita de queries
Generación explícita de queries
Soporte completo a CRUD
![Page 17: Nuevas formas de pensar en datos con LINQ y Visual Studio 2008](https://reader035.vdocuments.site/reader035/viewer/2022062312/554ebde0b4c905064d8b470d/html5/thumbnails/17.jpg)
Mapeando los Datos
Filas como objetos de negocioTablas como coleccionesBases de Datos como DataContext
Base de Datos
Tabla
Fila
Fila
DataContext
Colección
Objeto
Objeto
![Page 18: Nuevas formas de pensar en datos con LINQ y Visual Studio 2008](https://reader035.vdocuments.site/reader035/viewer/2022062312/554ebde0b4c905064d8b470d/html5/thumbnails/18.jpg)
DEMOExplorando LINQ to SQL
![Page 19: Nuevas formas de pensar en datos con LINQ y Visual Studio 2008](https://reader035.vdocuments.site/reader035/viewer/2022062312/554ebde0b4c905064d8b470d/html5/thumbnails/19.jpg)
Agenda
Acceso a Datos en EvoluciónEntendiendo LINQ to SQLEntendiendo LINQ to XMLExplorando LINQ y XML en VB
![Page 20: Nuevas formas de pensar en datos con LINQ y Visual Studio 2008](https://reader035.vdocuments.site/reader035/viewer/2022062312/554ebde0b4c905064d8b470d/html5/thumbnails/20.jpg)
Beneficios de LINQ to XML
No hay barrera conceptual XML vs. code
Aprovecha experiencia con DOM
Facilita los requerimientos de compatibilidad
![Page 21: Nuevas formas de pensar en datos con LINQ y Visual Studio 2008](https://reader035.vdocuments.site/reader035/viewer/2022062312/554ebde0b4c905064d8b470d/html5/thumbnails/21.jpg)
Objetos de Ayuda LINQ to XML
XDocumentXNamespaceXCommentXElementXAttribute
![Page 22: Nuevas formas de pensar en datos con LINQ y Visual Studio 2008](https://reader035.vdocuments.site/reader035/viewer/2022062312/554ebde0b4c905064d8b470d/html5/thumbnails/22.jpg)
DEMOTrabajando con Datos XML
![Page 23: Nuevas formas de pensar en datos con LINQ y Visual Studio 2008](https://reader035.vdocuments.site/reader035/viewer/2022062312/554ebde0b4c905064d8b470d/html5/thumbnails/23.jpg)
Agenda
Acceso a Datos en EvoluciónEntendiendo LINQ to SQLEntendiendo LINQ to XMLExplorando LINQ y XML en VB
![Page 24: Nuevas formas de pensar en datos con LINQ y Visual Studio 2008](https://reader035.vdocuments.site/reader035/viewer/2022062312/554ebde0b4c905064d8b470d/html5/thumbnails/24.jpg)
Nuevas Características de VB
Variables locales implícitas
Métodos de extensión
Inicializadores de objetos
Tipos anónimos
Expresiones de Queries
Dim x = 5
<Extension()> _ Sub Rand (col As IEnumerable)
New Point With { .x = 1, .y = 2 }
New With { c.Name, c.Phone }
From … Where … Select
![Page 25: Nuevas formas de pensar en datos con LINQ y Visual Studio 2008](https://reader035.vdocuments.site/reader035/viewer/2022062312/554ebde0b4c905064d8b470d/html5/thumbnails/25.jpg)
Beneficios de VB con LINQ to XML
Literales XML Dim doc = <root><results/></root>
Propiedades XML
If doc.<results>.Count() > 5 Then …Console.WriteLine(<book>.@name)
Namespaces Importados
Imports <xmlns:ns=http://testuri.org”>
![Page 26: Nuevas formas de pensar en datos con LINQ y Visual Studio 2008](https://reader035.vdocuments.site/reader035/viewer/2022062312/554ebde0b4c905064d8b470d/html5/thumbnails/26.jpg)
DEMOTrabajando con XML, VB y ASP.NET
![Page 27: Nuevas formas de pensar en datos con LINQ y Visual Studio 2008](https://reader035.vdocuments.site/reader035/viewer/2022062312/554ebde0b4c905064d8b470d/html5/thumbnails/27.jpg)
Resumen
LINQ habilita acceso a datos declarativo
Los queries son ahora parte del lenguaje
Unifica acceso a datos entre orígenes de datos
![Page 28: Nuevas formas de pensar en datos con LINQ y Visual Studio 2008](https://reader035.vdocuments.site/reader035/viewer/2022062312/554ebde0b4c905064d8b470d/html5/thumbnails/28.jpg)
Más en:www.microsoft.com/learning/books
Publicaciones relacionadas con LINQ
![Page 29: Nuevas formas de pensar en datos con LINQ y Visual Studio 2008](https://reader035.vdocuments.site/reader035/viewer/2022062312/554ebde0b4c905064d8b470d/html5/thumbnails/29.jpg)
Quieres saber más?
Centro de información de LINQ
http://msdn.microsoft.com/data/ref/linq
El blog más didáctico sobre LINQ y VS 2008
http://weblogs.asp.net/scottgu
Blogs de los creadores
http://blogs.msdn.com/adonet
http://blogs.msdn.com/data
Mi blog
http://msguayaquil.com/blogs/julioc
![Page 30: Nuevas formas de pensar en datos con LINQ y Visual Studio 2008](https://reader035.vdocuments.site/reader035/viewer/2022062312/554ebde0b4c905064d8b470d/html5/thumbnails/30.jpg)
PREGUNTAS?
![Page 31: Nuevas formas de pensar en datos con LINQ y Visual Studio 2008](https://reader035.vdocuments.site/reader035/viewer/2022062312/554ebde0b4c905064d8b470d/html5/thumbnails/31.jpg)
© 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market
conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.