2013-06-15 4 views
1

, 나는 방법에 데이터베이스에서 데이터를 가져올 수 있습니다를 IEnumerable와이것은 IQueryable의 이점이 있습니까? 내가 '잘못 해달라고하면

  1. 첫째 :

    myContext.MyTable.ToList();

  2. 을 IQeryable으로 :

    IQueryable<MyTable> query = myContext.Mytable;

장점 중 하나는 IQueryable이 서버의 조건을 실행한다는 것입니다. 따라서 더 효율적이고 빠릅니다. IEnumerable.

하지만 내 저장소에서

, 나는 목록을 반환, 나는이 경우이를 알고 싶습니다은 :

return query.ToList(); 

IQueryable의 이점이있다.

답변

3

query.ToList()myContext.MyTable.ToList()과 동일합니다. 메모리 (전체 데이터베이스 테이블)에 컬렉션을 반환하며 이며 IQueryable<T>이 아닙니다. 추가 LINQ 연산자 - 예 : Where 절 -을 추가하면 메모리가 아닌 데이터베이스에서 수행됩니다.

IEnumerable<T> 또는 List<T>을 리포지토리에서 반환하려면 리포지토리 메서드를 디자인해야합니다. 예를 들어 필터 및 정렬 식을 매개 변수로 전달하여 해당 메서드 내부에 필터, 정렬 등을 적용 할 수 있습니다. 메서드 또는 GetOrdersByCustomerId, GetOrdersByShippingDate 등의 다양한 사용 사례에 대해 특수화 된 메서드를 많이 만들면됩니다. 리포지토리 메서드를 호출하거나 호출하지 않고 수행하면 성능이 저하됩니다.