2012-07-23 72 views
4

對不起,我想不出一個更好的標題! :)LINQ查詢具有遞歸關係的聚合計數

我有一個名爲進程表,它有一個遞歸關係來定義工序 - *子流程現在

,每個進程都可以具有連接到它的一個或多個指標:工序 - *公制

所以我的進程表看起來像:

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

我的指標表看起來像:

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

使用LINQ與EF,我可以建立一個查詢,將返回的總和:

  • 與進程相關聯的指標的計數
  • 指標與該是這一進程的後裔所有子進程相關聯的數

我正在尋找一種方法來返回此信息,如果可能的話只需調用一次數據庫即可。

謝謝!

Chris

回答

1

基本上你有兩種選擇。

  1. 將兩個表讀入內存並在代碼中處理結果。適合小型收藏。
  2. 使用遞歸CTE創建視圖並在EF中映射該視圖。加入這一觀點。編寫起來比較複雜,但是可以提供最好的性能,特別是對於大型收藏。