대퍼가 술어로 무엇을 할 것인가?

c# dapper

문제

List of Dogs 을 반환하는 메소드가있는 경우 DapperWhere 술어를 SQL 로 변환합니까? 또는 모든 개를 먼저 얻은 다음 목록을 필터링합니까?

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

인기 답변

Where 해결할 때 과부하 해결이 수행하는 작업에 따라 다릅니다.

Query 호출 결과가 List<Dog> 이고 using System.Linq; 지시어, 인수가 대리자이며, 다음은 Where 의 LINQ - 투 - 오브젝트 버전으로 해결됩니다 . Where 따라서 선택 쿼리는 서버에서 실행되고 Where 는 클라이언트에서 실행됩니다.

Query 의 결과가 IQueryable<Dog> 이고 인수가 Expression 경우 과부하 해결은 Where 가 기존 쿼리와 결합되는 위치를 선택합니다. 쿼리가 실행되면 Where 는 쿼리 공급자가 일반적으로 서버를 실행하기 위해 선택한 측에서 실행됩니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow