Este documento presenta una introducción a LINQ (Language Integrated Query), incluyendo sus características, ventajas y desventajas en comparación con SQL. Explica que LINQ permite realizar consultas a distintas fuentes de datos como objetos, XML y bases de datos usando una sintaxis unificada. También describe cómo LINQ mapea las consultas a la estructura de objetos para facilitar el desarrollo y cómo controla automáticamente los cambios en la base de datos.
1. Mgtr. Luis Fernando Aguas Bucheli
+593 984015184
@Aguaszoft
Aguaszoft@Outlook.es
CRUD con LINQ
2. Cuando te encuentres a ti mismo al lado de
la mayoría, es tiempo de parar y
reflexionar
(Mark Twain)
3. Objetivo general
Conocer qué es y qué utilidades tiene la aplicación de LINQ, el tipo de
sintaxis, las facilidades que presenta, las ventajas y desventajas hacia el SQL
común.
4. Metodología
La metodología consiste en un proceso interactivo entre el profesor
[dinamizador] y los estudiantes, la cual se hadefinido como: “Aprender
haciendo - haciendo aprendiendo”.
En este proceso el profesor será el que guiará la dinámica para que los
estudiantes puedan aprender de forma constructiva su conocimiento.
6. LINQ
LINQ (Language Integrated Query) ó lenguaje integrado de consultas , son un
conjunto herramientas de Microsoft para realizar todo tipo de consultas a
distintas fuentes de datos: objetos, xmls, bases de datos, etc...
Para ello, usa un tipo de funciones propias, que unifica las operaciones más
comunes en todos los entornos, con esto, se consigue un mismo lenguaje para
todo tipo de tareas con datos.
7. LINQ
• LINQ nace en el Framework 3.5 y pronto coge una gran aceptación entre el
mundo de .net, tanto es asi, que enseguida salen proveedores de terceros,
para el uso de este lenguaje con JSON, CSVs, o inclusos APIs como la de
Twitter y Wikipedia.
• Para poder hacer uso de esta API y aprovechar todas las características de la
misma debemos hacer referencia al ensamble System.Data.Linq.dll y en
código al namespace System.Data.linq.
8. LINQ ySQL
Consultas integradas en el lenguaje
Linq maneja una
sintaxis muy similar
a SQL.
Es fácil de aprender
Mapping
La correspondencia
entre SQL y Linq
hace que se aplique
la estructura de
Objetos para facilitar
el desarrollo
Persistencia
Linq controla
automáticamente
los cambios en la
base de datos.
11. QUERYABLETYPES
• Los tipos que soportan IEnumerable<T> o derivan de interfaces como
IQueryable<T> son llamados Queryable Types
• Un objeto “queryable type” no requiere modificación ni trato especial para servir
como datasource de LINQ.
• Si los datos orígenes no están en memoria como “queryable type”, el proveedor
de LINQ debe representarlo como si estuviera.
12. Operadores más Comunes
• Select / SelectMany
• Where
• Sum / Min / Max / Average / Aggregate
• Join / GroupJoin
• GroupBy
• OrderBy / ThenBy
20. Ventajas
SELECT TOP 10 UPPER (c1.Name)
FROM Customer c1
WHERE
c1.Name LIKE 'A%'
AND c1.ID NOT IN
(
SELECT TOP 20 c2.ID
FROM Customer c2
WHERE c2.Name LIKE 'A%'
ORDER BY c2.Name
)
ORDER BY c1.Name
Aquí tenemos la misma consulta pero
en LINQ.
var query = from c in db.Customers
where c.Name.StartsWith("A")
orderby c.Name
select c.Name.ToUpper();
var thirdPage = query.Skip(20).Take(10);
21. IQueryable<Customer> GetCustomers (string state, decimal minPurchase)
{
var query = Customers.AsQueryable();
if (state != null)
query = query.Where (c => c.Address.State == "WA");
if (minPurchase != null)
query = query.Where (c => c.Purchases.Any (p => p.Price > minPurchase.Value)
);
return query;
}
SELECT [t0].[ID], [t0].[Name], [t0].[AddressID]
FROM [Customer] AS [t0]
LEFT OUTER JOIN [Address] AS [t1] ON [t1].[ID] = [t0].[AddressID]
WHERE (EXISTS(
SELECT NULL AS [EMPTY]
FROM [Purchase] AS [t2]
WHERE ([t2].[Price] > @p0) AND ([t2].[CustomerID] = [t0].[ID])
)) AND ([t1].[State] = @p1)
Ventajas
22. Desventajas de LINQ
A pesar de su poder, LINQ no deja obsoleto a SQL. Toma más del 95% de la
funcionalidad de las queries, pero se seguirá necesitando SQL para:
• Queries que busquen máxima optimización.
• Queries que involucren seleccionar en tablas temporales y luego consultar esas
tablas.
• Triggers
23. Conclusiones
LINQ nos permite modelar la capa de datos de nuestras aplicaciones de una forma
simple y limpia.
Una vez que hayamos definido nuestro modelo de datos, podemos realizar
consultas, inserciones, actualizaciones y borrados sobre ella de forma fácil y
eficiente.