2013-01-04 186 views
0

这个问题涉及到实体框架(数据库第一)的MVC4项目剃须刀 - 异物

我传递“公司”对象的(EF)收集到一个视图的访问属性。

我需要显示名称的'主要用户',它存储为每个'公司'对象中的int(外键)。

我能够得到PrimaryUserID这样的:

@foreach (var item in Model) 
{ 
     <div>@item.PrimaryUserID</div>  
} 

,但我无法弄清楚如何从ID访问PrimaryUser对象?

有没有办法做到这一点,而不是将包含PrimaryUser对象的自定义模型传递给我的视图?

任何帮助将不胜感激!

//编辑 - 这是怎么了我目前通过收集我的看法

public ActionResult Installers(int id = 0) 
    { 
     CompanyType installer = db.CompanyTypes.Single(ct => ct.Description == "Installer"); 

     return View(installer.Companies.ToList()); 
    } 

回答

0

您可以在模型中使用导航属性。

确保您的财产包含在您的EF查询中。 (这就是所谓的“预先加载”)

public ActionResult Installers(int id = 0) 
{ 
    CompanyType installer = 
     db.CompanyTypes 
     .Include(ct => ct.Companies.Select(c => c.PrimaryUser)) 
     .Single(ct => ct.Description == "Installer"); 

    return View(installer.Companies.ToList()); 
} 

然后,只需访问您的标记属性:

<div>@item.PrimaryUser.Name</div> 
+0

感谢您的帮助,但我不知道如何应用到我上面的例子,请给我一个指针? – Mike

+0

我已经更新了我的答案。加载意味着你在'Include'中指定的数据将被加载到一个数据库匹配中。 –

+0

任何想法为什么我'ABC.Company'没有声明名为'PrimaryUser'的导航属性?对不起,很痛苦! – Mike

0

你有一个导航属性设置为(什么是你大概)用户表中的EDMX?通常情况下,你只需要设置<div>@item.PrimaryUser.Name</div>即可。