Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porFrancisca Feria Modificado hace 9 años
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
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
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.