nuevas formas de pensar en datos con linq y visual studio 2008

31
Nuevas Formas de Pensar en Datos con LINQ y Visual Studio 2008 Julio Casal Software Developer John Galt Solutions

Upload: juliocasal

Post on 10-May-2015

1.334 views

Category:

Documents


1 download

DESCRIPTION

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

TRANSCRIPT

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

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

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

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

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

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

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

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

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

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

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

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

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

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

DEMODe C# 2.0 a LINQ

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

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

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

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

DEMOExplorando LINQ to SQL

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

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

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

Objetos de Ayuda LINQ to XML

XDocumentXNamespaceXCommentXElementXAttribute

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

DEMOTrabajando con Datos XML

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

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

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

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

DEMOTrabajando con XML, VB y ASP.NET

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

Resumen

LINQ habilita acceso a datos declarativo

Los queries son ahora parte del lenguaje

Unifica acceso a datos entre orígenes de datos

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

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

PREGUNTAS?

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

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