2011-06-13 23 views
0

我正試圖設計一個數據庫strcuture爲一個問題,然後是一個可以顯示該問題的應用程序。如何在SQL Server中創建遞歸關聯並在C#中使用Entity Framework進行循環?

在我的數據庫中,我有一個名爲Category的實體表。每個類別可以有多個子類別,每個子類別可以有多個子類別等。這是一個遞歸關聯。

[Table: Category] 
category_id 
category_number 
category_name 
parrent_id 

[Table: Question] 
question_id 
question_number 
question_wording 
question_category 

一個具體的例子是::

- Categories 

category_id = 1 
category_number = 1 
category_name = Milk Products 
parret_id = null 

category_id = 2 
category_number = 1.1 
category_name = Cheese 
parent_id = 1 

category_id = 3 
category_number = 1.1.1 
category_name = Soft 
parrent_id = 2 

- Questions 

question_id = 1 
question_number = 1 
question_wording = "From 1-5, how much do you like soft cheese?" 
category_id = 3 

question_id = 2 
question_number = 1 
question_wording = "How much do you like cheese?" 
category_id = 2 

如何,我會遍歷類別,並顯示每個類別和問題是這樣的:

目前,我有如下設計它

Questionnarie 
- Milk products 
-- Cheese 
-- "How much do you like cheese?" 
--- Soft-Cheese 
--- "From 1-5, how much do you like soft cheese?" 

我正在使用實體框架將我的數據庫加載到c#

在此先感謝!

回答

1

你會這樣做,就像你會用普通的C#代碼一樣。您可以進行遞歸函數調用:

public IEnumerable<Category> GetSubCategoriesFor(int catId) 
{ 
    var subs = db.Categories.Where(c => c.ParentId == catId); 

    foreach (var sub in subs) 
    { 
     yield return sub; 

     // Recursive call 
     foreach (var subsub in GetSubCategoriesFor(sub.Id)) 
     { 
      yield return subsub; 
     } 
    } 
} 
+0

它的工作原理。謝啦! :) – Nanek 2011-06-13 19:06:59

相關問題