2015-12-15 37 views
0

我想使用實體框架從自引用表中選擇所有相關記錄。我沒有任何特定的級別。這只是針對所有相關記錄的所有兒童和所有家長。以下是一些示例數據。所以如果我將ID 5傳遞給我的函數,它應該給我記錄ID 1,4,5,7,8。自我參考獲取所有鏈接記錄父母與子女

5是Id 7的父級ID,7是Id 8的父級ID。同樣,5的父代號是1,1也是代號4的父代號。

因此,通過這種方式,我想選擇Id 5以下和以上的所有記錄。

數據源

Id Name ParentId 
1 Test 1 NULL 
2 Test 2 NULL 
3 Test 3 NULL 
4 Test 4 1 
5 Test 5 1 
6 Test 6 4 
7 Test 7 5 
8 Test 7 7 

預計

1 Test 1 NULL 
4 Test 4 1 
5 Test 5 1 
7 Test 7 5 
8 Test 7 7 
+0

看看這個[問題](http://stackoverflow.com/questions/11929535/writing-recursive-cte-using-entity-framework-fluent-syntax-or-inline-syntax)。你需要一個遞歸查詢,它看起來像EF不直接支持 – juharr

+0

我沒有寫任何可以用作基礎的實體。我試圖使用單獨的循環讀取下方和上方的記錄,但由於我沒有任何級別,所以它需要某種遞歸。所以我的代碼根本不起作用。你可以從頭開始。 – Deb

+1

從這裏開始http://sqlfiddle.com/#!3/497b0/6。它不是一個完整的答案 –

回答

0

我的邏輯。我們需要首先確定根節點,然後從根節點查找鏈接的家族樹。 我們可以編寫一個CTE來查找根節點,或者我們可以添加一個保留根節點ID的新列。 Sql Fiddle With Root Node