2011-06-29 66 views
0

我是mvc newbe。
我有一個關於asp.mvc處理數據庫父子關係的問題。
我有三個表'公司','會員'和'方法'。我在「公司」和「會員」之間創建了父母/子女關係,並在「成員」和「方法」之間建立了父母/子女關係。
我正在使用Linq to Sql和一個存儲庫模式來與我的mssql數據庫交流。有關asp.mvc處理數據庫親子關係的問題

在我的HomeController我有以下操作結果

var memData = _repository.GetCompany(id); 
return View(memData); 

在我看來,那我想用三個部分景色

<% Html.RenderPartial("ShowCompany"); %> 
<% Html.RenderPartial("ShowMember"); %> 
<% Html.RenderPartial("ShowMethod"); %> 

我已經能夠創建前兩個部分的觀點和使用以下代碼遍歷每個類屬性。

foreach(Member m in Model.Members) 
    foreach(Company c in Model.Company) 

因爲成員是公司的孩子,我可以遍歷模型中的成員導航屬性。
但是,我無法訪問公司模型中的第三個「方法」表。
在公司類的背景下,我認爲雖然'方法'是'會員'的孩子,雖然不是'公司'的孩子,但導航資產並沒有暴露在'會員'中'班?

你能告訴我應該怎麼做?
我應該創建一個包含兩個屬性「公司」和「方法」的自定義視圖模型嗎?
我將如何實現這一目標?我相信,在我的家鄉控制器我會和我的第一個存儲庫法的另一種方法來retieve一個「法」對象

var memData = _repository.GetCompany(id); 
var methodData = _repository.GetMethod(id); 

我怎麼會在這兩個對象傳遞到視圖()?

回答

0

我想你應該能夠使用嵌套foreach循環

foreach (m in model.Members) 
{ 
    //do stuff 
    foreach (method in m.Methods) 
    { 
     //do stuff 
    } 
} 
+0

感謝您快速的響應 - 這對於嵌套循環是回答我的問題。 – teabgg99

+0

酷可以通過點擊複選標記來接受它。謝謝! – ZeroDivide

0

所以澄清:

公司(有很多)會員(有許多)方法?

我相信,雖然「法」是 孩子「會員」的,但「公司」的不是一個孩子 ,一個導航 屬性是不是在同一個 暴露是作爲「會員'班?

如果是這樣的話,和你缺少公司和會員之間的導航屬性,那麼你需要創建一個。假設您使用L2S設計器生成模型,請確保您的數據庫中已定義關係。

一旦完成,我們可以繼續前進。

然後你就可以interate您的收藏像這樣:

// model is IEnumerable<Company> 

foreach (var company in Model) { 
    // do something with company 
    foreach (var member in company.Members) { 
     // do something with member 
     foreach (var method in member.Methods) { 
      // do something with method 
     } 
    } 
}