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



我是mvc新手
关于asp.mvc处理数据库父子关系的方式,我遇到了一个问题
我有三张表"公司"、"会员"one_answers"方法"。我在"公司"one_answers"成员"之间创建了父子关系,在"成员"one_answers"方法"之间创建父/子关系
我正在使用Linq-to-Sql和存储库模式来与我的mssql数据库通信。

在我的家庭控制器中,我有以下操作结果

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)  

因为Members是Company的子级,所以我可以在Model中迭代Members导航属性
但是,我无法访问公司模型中的第三个"方法"表
在Company类的上下文中,我认为尽管"Method"是"Member"的子级,尽管不是"Company"的子代,但导航属性没有在与"Member"类相同的情况下公开?

你能告诉我该怎么办吗
我应该创建一个包含两个属性"Company"one_answers"Method"的自定义视图模型吗
我将如何实现这一点?我想,在我的家庭控制器中,我会有一个额外的方法,以及我的第一个存储库方法,来重新设置"方法"对象

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

如何将这两个对象传递到View()中?

因此需要澄清:

公司(有很多)会员(有许多)方法?

我认为尽管"Method"是"成员"的子级,但不是子级对于"公司"属性不在至于"会员"类?

如果是这种情况,并且您缺少"公司"one_answers"成员"之间的导航属性,则需要创建一个导航属性。假设您使用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
        }
    }   
}

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

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

最新更新