2011-06-29 65 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 
     } 
    } 
}