2012-07-23 3 views
4

죄송합니다. 더 좋은 제목을 생각할 수 없습니다! :)재귀 관계가있는 집계 수에 대한 LINQ 쿼리

내가 프로세스라는 테이블을 가지고, 그것은 각각의 프로세스에 연결된 하나 개 이상의 메트릭을 가질 수

이제 프로세스 - * 하위 프로세스를 정의하는 순환 관계가있다 : 프로세스 - * 미터

그래서 내 프로세스 테이블과 같습니다

PROCESS 
------- 
ID 
PID (fkey on Process.ID) 

그리고 내 메트릭 테이블과 같습니다

METRIC 
------ 
ID 
PID (fkey on Process.ID) 
EF와 LINQ를 사용

, 나는의 합을 반환하는 쿼리를 구축 할 수 있습니다 :

  • 프로세스와 관련된 통계의 수를
  • 그 프로세스의 후손 인 모든 서브 프로세스와 관련된 통계의 수

가능하면 DB에 대한 단일 호출로이 정보를 반환하는 방법을 찾고 있습니다.

감사합니다.

크리스

답변

1

기본적으로 두 가지 옵션이 있습니다.

  1. 두 테이블을 모두 메모리로 읽어 들여 결과를 코드로 처리하십시오. 소규모 컬렉션에 적합합니다.
  2. 재귀 CTE가 포함 된보기를 만들고 EF에서 해당보기를 매핑하십시오. 해당보기에 가입하십시오. 쓰기가 더 복잡하지만 특히 대규모 컬렉션의 경우 최상의 성능을 제공합니다.