1 / 28

Consultando Base de Datos con LINQ en C#

Consultando Base de Datos con LINQ en C#. Richard Jiménez V. Empresas América www.empresas-america.com linqucatec.wordpress.com. ¿Quién soy?. Richard Jiménez Velasco Lic. en Informática en la UMSS Maestría en Informática en la UMSS

ashton
Download Presentation

Consultando Base de Datos con LINQ en C#

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ConsultandoBase de Datos con LINQ en C# Richard Jiménez V. Empresas América www.empresas-america.com linqucatec.wordpress.com

  2. ¿Quién soy? Richard Jiménez Velasco Lic. en Informática en la UMSS Maestría en Informática en la UMSS Especialidad en desarrollo de aplicaciones Multimedia en Okinawa - Japón UMSS ANB Banca y Finanzas Universidad Católica Boliviana, UPDS Empresas América .Net Software Developer

  3. ¿Quiénes son Uds? • ¿Conoces C#? • ¿Lenguaje SQL? • ¿Base de datos?

  4. ¿Qué Veremos Hoy? • ¿Qué es LINQ? • La filosofía de LINQ • Consultas en LINQ • Sintaxis de LINQ • Consultas sobre colecciones en memoria en LINQ • Acceso a bases de datos con LINQ • Integración con XML • Practica en LINQ

  5. Cambiando de Perspectiva …

  6. Problema O.O. vs Relacional • El problema es que en la mayoría de los casos, al menos en lo bases de datos relacionales, existe una amplia brecha entre el lenguaje de programación O.O. y las base de datos. Paradigma Orientado a Objetos vs. Paradigma de Bases de datos relacionales.

  7. Data Access(DBASE 1980s) USE empl REPLACE ALL salary WITH (salary * 1.1) FOR supervises > 0 LIST ALL fname, lname, salary FOR Supervises > 0 • La consulta y manipulación de datosesuna parte fundamental de la experiencia en el modelo de programación • Teníalimitaciones, pero era útil

  8. APIs de Acceso a Datos(finales de 1990s/inicios de 2000s) SqlCommandcmd = new SqlCommand( @"SELECT fname, lname, salary FROM Empl WHERE supervises > @p0" ); cmd.Parameters.AddWithValue("@po", 0); SqlConnection c = new SqlConnection(…); c.Open(); DataReaderpeople = c.Execute(cmd); while (people.Read()) { string fname = (string) people[“fname”]; string lname = (string) people[“lname”]; double salary = (double) people[“salary”]; } dr.Close();

  9. 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; } • Mapeadatosrelacionaleshacia/desdeobjetos • Integraciónmásclara de reglas de negocio y validaciones

  10. ¿Qué es LINQ? • LanguageIntegratedQuery (LINQ) • Es un proyecto de Microsoft que agrega consultas nativas semejantes a las de SQL a los lenguajes de la plataforma .NET, inicialmente a los lenguajes Visual Basic .NET y C#. • LINQ define operadores de consulta estándar que permiten a lenguajes habilitados con LINQ filtrar, enumerar y crear proyecciones de varios tipos de colecciones usando la misma sintaxis. • Tales colecciones pueden incluir vectores (arrays), clasesenumerables, XML, conjuntos de datos desde bases de datos relacionales y orígenes de datos de terceros.

  11. LINQ es: Queries integrados en el código (C#/VB) • Tipos fuertes • Beneficios del IntelliSense • Colecciones de objects • Datosrelacionales • XML Queries Unificados Language INtegratedQueries

  12. Solución : LINQ • La intención de Microsoft con LINQ, es propor-cionar una solución para el problema del mapeo objeto-relacional, así como para simplificar la interacción entre los objetos y fuentes de datos. • El objetivo de crear LINQ es permitir que todo el código hecho en Visual Studio (incluidas las llamadas a bases de datos, datasets, XMLs) sean también orientados a objetos.

  13. Ejemplo: Antes MySqlDataReader reg; string MyConString = "SERVER=" + ip + ";" + "DATABASE=“+db+"; "UID=“+user+“; PASSWORD=“+pass+”;”; MySqlConnection connection =new MySqlConnection(MyConString); MySqlCommand command = connection.CreateCommand(); command.CommandText = "SELECT * FROM responsable WHERE cod_resp='"+cod+"' AND usr_baja=''"; reg = command.ExecuteReader(); //Comandos connection.Close(); Con LINQ LinqDb1DataContext db = new LinqDb1DataContext(); var query = from resp in db.respobable select resp;

  14. Pero Aún Existen Retos… • Cómotraerdatos no-relacionales? • XML, RSS, Web Services, REST, AD, Files, etc. • Cómointeractuar con objetosplanos? • Cómointeractura y consultarmodelos de dominiopersonalizado? • Cómopermitirdarle forma y transformar los datos? • Soportar composición flexible de queries • Cómopermitiresto con códigolimpio en un mundotantotipificadocomodinámico?

  15. LINQ • Operaciones de Consultas, Asignación y Transformaciónpara .NET • Convierte a la consulta de datos un concepto de programación fundamental • Trabaja con todos los tipos y formas de datos • Bases de datos relacionales • XML • Objetos Planos • Trabaja con todos los lenguajes .NET • Las nuevas versiones de VB y C# tienen soporte integrado en el lenguaje

  16. Términos y Características de LINQ • QueryExpression • MethodQueries Inferencia de Tipos TiposAnónimos Expresiones Lambda • Métodos de Extensión Dos sintaxispara queries

  17. QueryExpressions SELECT c.FullName, Age = getdate() – c.BirthDay FROM Customers c WHERE c.BirthDay = getdate() ORDER BY c.BirthDay var todaysBirthday = from c in db.Customers where c.BirthDay == DateTime.Today orderby c.BirthDay select new { c.FullName, Age = DateTime.Today – c.BirthDay };

  18. demo Hello LINQ

  19. Agenda • Acceso a Datos en Evolución • Entendiendo LINQ to SQL • Entendiendo LINQ to XML

  20. Mapeando los Datos • Filas como objetos de negocio • Tablas como colecciones • Bases de Datos como DataContext Base de Datos DataContext Tabla Colección

  21. demo Explorando LINQ to SQL

  22. Agenda • Acceso a Datos en Evolución • Entendiendo LINQ to SQL • Entendiendo LINQ to XML

  23. Beneficios de LINQ to XML • No hay barrera conceptual XML vs. code • Aprovecha experiencia con DOM • Facilita los requerimientos de compatibilidad

  24. Objetos de Ayuda LINQ to XML • XDocument • XNamespace • XComment • XElement • XAttribute

  25. demo Trabajando con Datos XML

  26. Publicaciones relacionadas con LINQ Más en: www.microsoft.com/learning/books

  27. Quieres saber más? • Centro de información de LINQ • http://msdn.microsoft.com/data/ref/linq • El blog másdidácticosobre LINQ • http://weblogs.asp.net/scottgu • Blogs de los creadores • http://blogs.msdn.com/adonet • http://blogs.msdn.com/data • Mi blog • http://linqucatec.wordpress.com

  28. Preguntas?

More Related