Que fera dapper avec un prédicat?

c# dapper

Question

Si j'ai une méthode qui renvoie une List of Dogs , Dapper convertit-il le prédicat Where en SQL Où? ou est-ce que ça prend tous les chiens d'abord et ensuite filtre la liste?

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

Réponse populaire

Cela dépend de la résolution de la surcharge lors de la résolution de Where .

Si le résultat de l'appel à Query est une List<Dog> et que vous using System.Linq; directive, et l'argument est un délégué, alors le Where se résoudra à la version LINQ-to-objects de Where . La requête select s'exécutera donc sur le serveur, puis le Where s'exécutera sur le client.

Si le résultat de la Query est IQueryable<Dog> et que l'argument est une Expression résolution de la surcharge choisit le lieu Where qui se combine avec la requête existante. Lorsque cette requête est exécutée, le Where s'exécute du côté sur lequel les fournisseurs de requêtes choisissent de l'exécuter, qui est généralement le serveur.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi