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

Post on 10-May-2015

1.334 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

Nuevas Formas de Pensar en Datos con LINQ y Visual Studio 2008

Julio CasalSoftware DeveloperJohn Galt Solutions

Qué Veremos Hoy?

La filosofía de LINQSintaxis para queries LINQQueries sobre colección en memoryAcceso a bases de datosIntegración XML

Nivel 200

Experiencia Previa

C# ó VB IntermedioSintaxis para queries SQLHabilidades XML intermedias

Agenda

Acceso a Datos en EvoluciónEntendiendo LINQ to SQLEntendiendo LINQ to XMLExplorando LINQ y XML en VB

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

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

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)

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

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?

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

Qué es LINQ?

Tipos fuertesBeneficios del IntelliSense

Language INtegrated Queries

Colecciones de objectsDatos relacionalesXML

Queries integrados en el código (C#/VB)

Queries Unificados

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

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

DEMODe C# 2.0 a LINQ

Agenda

Acceso a Datos en EvoluciónEntendiendo LINQ to SQLEntendiendo LINQ to XMLExplorando LINQ y XML en VB

LINQ to SQL

Generación implícita de queries

Generación explícita de queries

Soporte completo a CRUD

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

DEMOExplorando LINQ to SQL

Agenda

Acceso a Datos en EvoluciónEntendiendo LINQ to SQLEntendiendo LINQ to XMLExplorando LINQ y XML en VB

Beneficios de LINQ to XML

No hay barrera conceptual XML vs. code

Aprovecha experiencia con DOM

Facilita los requerimientos de compatibilidad

Objetos de Ayuda LINQ to XML

XDocumentXNamespaceXCommentXElementXAttribute

DEMOTrabajando con Datos XML

Agenda

Acceso a Datos en EvoluciónEntendiendo LINQ to SQLEntendiendo LINQ to XMLExplorando LINQ y XML en VB

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

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

DEMOTrabajando con XML, VB y ASP.NET

Resumen

LINQ habilita acceso a datos declarativo

Los queries son ahora parte del lenguaje

Unifica acceso a datos entre orígenes de datos

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

PREGUNTAS?

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

top related