La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Language Integrated Query Johnny Halife Microsoft Student Ambassador Southworks.

Presentaciones similares


Presentación del tema: "Language Integrated Query Johnny Halife Microsoft Student Ambassador Southworks."— Transcripción de la presentación:

1 Language Integrated Query Johnny Halife Microsoft Student Ambassador Southworks

2 Un problema práctico Sistema 5 Stored Procedures Objeto DataAccess Recursos

3 Agenda Qué es LINQ? Standard Query Operations DLINQConclusiones

4 Qué es LINQ? La programación hoy en día Desarrollo Orientado a Objetos Datos en tecnologías no OO. Distintos entornos de Desarrollo No Intellisense, late bound, verbose T-SQL vs..NET Framework “Impedance Mismatch” Transactions Nulls - 3-value logic Normalized Data Declarative Queries Transparency Exception Handling “Different” nulls Objects Imperative operations Encapsulation Database World Programming World

5 Standard Query Operators Objects DLinq (ADO.NET) XLinq(System.Xml) XML.NET Language Integrated Query C#VBOthers… SQLWinFS The LINQ Project

6 Arquitectura LINQ Query Objects SubmitChanges() SQL Query Rows SQL or Stored Procs DLinq (ADO.NET) SQLServer from c in db.Customers where c.City == "London" select new { c.Name, c.Phone } select Name, Phone from customers where city = 'London' Application Services: - Change tracking - Concurrency control - Object identity

7 Una consulta hoy en día SqlConnection c = new SqlConnection(…); c.Open(); SqlCommand cmd = new SqlCommand( @"SELECT c.Name, c.Phone FROM Customers c WHERE c.City = @p0" ); cmd.Parameters.AddWithValue("@po", " London " ); DataReader dr = c.Execute(cmd); while (dr.Read()) { string name = dr.GetString(0); string phone = dr.GetString(1); DateTime date = dr.GetDateTime(2); } dr.Close(); Queries entre comillas Resultados no tipados No hay checkeos en compilación Argumentos literales

8 Una consulta con LINQ public class Customer { public int Id; public int Id; public string Name; public string Name; public string Phone; public string Phone; …} Table customers = db.Customers; var contacts = from c in customers from c in customers where c.City == "London" where c.City == "London" select new { c.Name, c.Phone }; select new { c.Name, c.Phone }; Clases que describen tablas Las tablas son colecciones El query es nativo del lenguaje Validación en tiempo de compilación

9 Demostracion #1 Una consulta con LINQ

10 En qué esta basado LINQ? En las innovaciones introducidas por C# 2.0 y C# 3.0

11 Objetivos de C# 3.0 Integración de OOP, Relacional y Xml. Basarse en los fundamentos de C# 2.0. No atar los lenguajes a APIS especificos. Compatibilidad hacia atrás.

12 Métodos de Extensión Agregar metodos a clases (incluso selladas) Notación de cascada de puntos (tipica en OOP) Fácil de escribir Expresiones Lambda Notación más clara y funcional Se pueden omitir los tipos de datos, se infieren. Puede ser una expresión o una secuencia de sentencias Inicialización de Objetos Ya no es necesario declarar tantas sobrecargas del c’tor como inicializaciones posibles hay del objeto. Inicialización de Collections Tipos Anónimos Sirven para el resultado de las querys Inferencia de Tipos Codificación más clara Posibilidad de trabajar con tipos anónimos En qué esta basado LINQ? Innovaciones C# 3.0

13 Demostracion #2 C# 3.0 Features

14 Agenda Qué es LINQ? Standard Query Operations DLINQConclusiones

15 Standard Query Operations Accediendo Objetos con LINQ Expresiones de Consulta con LINQ from id in source { from id in source | where condition } [ orderby ordering, ordering, … ] select expr | group expr by key [ into id query ] EMPIEZA CON from SEGUIDO DE CERO o MAS from o where orderby OPCIONAL TERMINA CON UN select o CON UN group by PUEDE CONTINUAR CON UN into

16 Operaciones de Consulta de LINQ RestricciónWhere Proyección Select, SelectMany Ordenación OrderBy, ThenBy AgrupaciónGroupBy Cuantificación Any, All Partición Take, Skip, TakeWhile, SkipWhile Conjuntos Distinct, Union, Intersect, Except Elementos First, FirstOrDefault, ElementAt Agregación Count, Sum, Min, Max, Average, Fold Conversion ToArray, ToList, ToDictionary CastingOfType<T>

17 Demostracion #3 Usando métodos de consulta

18 Agenda Qué es LINQ? Standar Query Operations DLINQConclusiones

19 Mapeo a través de atributos Mapeo manual o automatico (built-in tool) Persistencia Control de cambios automático DataContext Bases de Datos fuertemente tipadas DLINQ Datos Relacionales con DLINQ

20 Demostracion #3 Accediendo a datos relacionales con DLINQ

21 Caracteristicas Language Integrated Query Checkeos en tiempo de compilación, IntelliSense Sintaxsis tipo SQL Soporte para jerarquias y relaciones Carga de objetos inteligentes Lazy o Inmediata

22 Demostracion #4 Relaciones con LINQ

23 Caracteristicas Updates automaticos Usando optimistic concurrency Transactions Integradas con System.Transactions

24 Demostracion #5 Updates usando DLINQ

25 Conclusiones

26 Demostracion #7 Poniendo todo junto….

27 Para más información Data Access and Storage Developer Center: The LINQ Project Data Access and Storage Developer Center: The LINQ Project http://msdn.microsoft.com/netframework/future/lin q/ http://msdn.microsoft.com/netframework/future/lin q/ C# 3.0 Hands On Lab LINQ Hands On Lab http://staff.southworks.net/blogs/johnny http://www.ajlopez.net

28 Preguntas

29

30 Agenda Qué es LINQ? Standard Query Operations DLINQXLINQConclusiones

31 XLINQ Por qué es XLINQ? “XML esta en Todos Lados” Programar con XML sigue siendo dificil XML Query vs. XMLDocuments Requiere mucha experiencia en XML No esta integrado al lenguaje No soporta joins

32 Qué es XLINQ? Un API para programar XML in-memory Language Integrated Query (LINQ) para XML Language Integrated Query (LINQ) para XML

33 Un reemplazo para System.Xml Streaming XML API Relacionado con W3C XLink Qué NO es XLINQ?

34 Demostracion #6 Una consulta al estilo XLINQ

35 XLINQ Caracteristicas Operaciones de Consulta Standard Operaciones de consulta para XML Expresiones de Consulta Transformaciones

36 XLINQ Query Operators XLINQ vs. XPATH ParentElement(XName)Elements()Elements(XName)Content()Content<T>()Attribute(XName)Attributes() parent::*child::name[1]child::*child::namechild::node()child::node(nodeType)attribute::nameattribute::* XPath Equivalent

37 XLINQ Query Operators XLINQ vs. XPATH DescendantsDescendants(XName)DescendantsAndSelfAncestorsAncestors(XName)AncestorsAndSelfElementsBeforeThisElementsAfterThis XPath Equivalent descendants::*descendants::namedescendants-or-self::*ancestors::*ancestors::nameancestors-or-self::*preceding-sibling::*following-sibling::*

38 Demostracion #6 XLINQ vs. XPATH


Descargar ppt "Language Integrated Query Johnny Halife Microsoft Student Ambassador Southworks."

Presentaciones similares


Anuncios Google