¿Qué hará Dapper con un predicado?

c# dapper

Pregunta

Si tengo un método que devuelve una List of Dogs , ¿ Dapper convierte el predicado Where en un SQL Where? ¿o consigue todos los perros primero y luego filtra la lista?

public IList<Dog> GetDogsBy(Func<Dog, bool> predicate)
{
    return db.Query<Dog>("SELECT * FROM Dog",null).Where(predicate).ToList();
}

Respuesta popular

Depende de la resolución de sobrecarga cuando se resuelve el Where .

Si el resultado de la llamada a Query es una List<Dog> y usted tiene un using System.Linq; directiva, y el argumento es un delegado, luego el Where se resolverá con la versión LINQ-to-objects de Where . Por lo tanto, la consulta de selección se ejecutará en el servidor y luego Where se ejecutará en el cliente.

Si el resultado de Query es IQueryable<Dog> y el argumento es una Expression , la resolución de sobrecarga elegirá Where que se combina con la consulta existente. Cuando se ejecuta esa consulta, Where ejecuta en cualquier lado en el que los proveedores de consulta decidan ejecutarlo, que normalmente es el servidor.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow