Asp.net mvc 有关asp.mvc处理数据库父子关系的方式的问题

Asp.net mvc 有关asp.mvc处理数据库父子关系的方式的问题,asp.net-mvc,linq-to-sql,Asp.net Mvc,Linq To Sql,我是mvc新手。 我对asp.mvc处理数据库父子关系的方式有问题。 我有三个表格“公司”、“成员”和“方法”。我已在“公司”和“成员”之间创建了父/子关系,“成员”和“方法”之间创建了父/子关系。 我正在使用LINQtoSQL和存储库模式与我的mssql数据库通信 在我的HomeController中,我有以下操作结果 var memData = _repository.GetCompany(id); return View(memData); 在我看来,我想使用三个局部视图 <%

我是mvc新手。
我对asp.mvc处理数据库父子关系的方式有问题。
我有三个表格“公司”、“成员”和“方法”。我已在“公司”和“成员”之间创建了父/子关系,“成员”和“方法”之间创建了父/子关系。
我正在使用LINQtoSQL和存储库模式与我的mssql数据库通信

在我的HomeController中,我有以下操作结果

var memData = _repository.GetCompany(id);  
return View(memData);
在我看来,我想使用三个局部视图

<% Html.RenderPartial("ShowCompany"); %>  
<% Html.RenderPartial("ShowMember"); %>  
<% Html.RenderPartial("ShowMethod"); %>  
因为Members是公司的子公司,所以我可以在模型中迭代Members导航属性。
但是,我无法访问公司模型中的第三个“方法”表。
在Company类的上下文中,我假设虽然“Method”是“Member”的子类,但不是“Company”的子类,但导航属性不会在与“Member”类相同的was中公开

你能告诉我该怎么做吗?
我应该创建一个包含两个属性“Company”和“Method”的自定义视图模型吗?
我将如何实现这一点?我假设,在我的主控制器中,除了我的第一个存储库方法外,我还有一个额外的方法来重设“method”对象

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

如何将这两个对象传递到视图()

我认为您应该能够使用嵌套的foreach循环

foreach (m in model.Members)
{
     //do stuff
     foreach (method in m.Methods)
     {
         //do stuff
     }
 }
因此,为了澄清:

公司(有很多)成员(有很多)方法

我认为虽然“方法”是一个 “成员”的子女,但不是子女 “公司”的名称,这是一个航海术语 属性不在同一文件中公开 至于“会员”班呢

如果是这种情况,并且您缺少公司和成员之间的导航属性,则需要创建一个。假设您使用L2S设计器生成模型,请确保在数据库中定义了关系

一旦完成,我们就可以向前迈进

然后您可以像这样交互您的集合:

// 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
        }
    }   
}
//模型是IEnumerable
foreach(模型中的var公司){
//与公司合作
foreach(公司中的var成员。成员){
//和会员做点什么
foreach(member.Methods中的var方法){
//用方法做某事
}
}   
}

感谢您的快速响应-这个嵌套for循环就是我问题的答案。
// 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
        }
    }   
}