2013-11-28 2 views
1

EntityFramework 버전 5를 사용하는 응용 프로그램의 네트워크에서 느린 성능을 조사하고 있습니다. 시도한 한 가지 옵션은 전체 개체 대신 Id 필드 만 검색하는 것이 었습니다. 그러나 Wireshark에서 조사한 결과, 모든 객체가 어쨌든 전송된다는 것을 알았습니다. 즉, 다음 두 코드 블록은 정확히 동일한 네트워크 활동을 발생시킵니다. 아무도 어떻게 첫 번째 쿼리에서 ID를 반환하는 db 발생할 수 있습니다 알아?EntityFramework는 하나의 열만 요청할 때 왜 전체 개체를 반환합니까?

List<long> test = dbContext.UserActivities 
      .Where(ua => ua.Activity.Id == activityId) 
      .Select(ua => ua.User) 
      .ToList() 
      .Select(u => u.Id) 
      .ToList(); 

List<long> test = dbContext.UserActivities 
      .Where(ua => ua.Activity.Id == activityId) 
      .Select(ua => ua.User) 
      .ToList(); 
+4

'.ToList()는'객체를 구체화. 기본적으로 쿼리를 실행합니다. 이후의 모든 것은 LINQ to Objects입니다. – James

답변

4

.ToList()는 개체를 구체화합니다. 기본적으로 쿼리를 실행합니다. 이후의 모든 것은 LINQ to Objects입니다. 이 같은

시도 뭔가 :

List<long> test = dbContext.UserActivities 
      .Where(ua => ua.Activity.Id == activityId) 
      .Select(ua => ua.User.Id).ToList(); 
2
List<long> test = dbContext.UserActivities 
      .Where(ua => ua.Activity.Id == activityId) 
      .Select(ua => ua.User.Id).ToList(); 
+0

내 쿼리에서 약간의 오류가 발생하여 올바르게 수정했습니다 (현재 수정되었습니다). +1 – James

+0

@ 제임스 +1 바로 당신을 다시 : – Aducci

+0

그건 정확히 내가 누락되었습니다. – Manish

관련 문제