选择实体不会选择关联的实体

时间:2009-05-12 05:53:20

标签: asp.net-mvc linq entity-framework linq-to-entities

我正在学习ASP.NET MVC(以及一般的MVC)和所有在线帮助我发现只使用单个表进行演示,而不是多个表之间的关系。我正在运行一个我希望也应该返回关联实体的查询,但它不是,也无法弄清楚我缺少的是什么。感谢您的帮助!

我有以下数据:

Ticket
   TicketID  CompanyID  Subject  ...
   --------  ---------  -------
   1         1          "stuff"
   2         1          "things"

Company
   CompanyID  Name      ...
   ---------  --------
   1          "FredCo"

因此每张门票都与特定公司相关联。我正在尝试为Tickets创建一个Details视图,我想显示公司名称。这就是我目前所建立的。

模型

Ticket实体和Company实体,它们之间有一个名为CompanyTicket的关联。导航属性是Ticket.Company和Company.Tickets。

在关联的映射详细信息中,我有:

Maps to Ticket
    Company.CompanyID <-> CompanyID
    Ticket.TicketID   <-> TicketID

控制器

我的TicketController.Details方法如下所示:

public ActionResult Details( int id )
{
    var tickettoview = ( from m in _db.Ticket
                         where m.TicketID == id
                         select m ).First();
    return View( tickettoview );
}

编辑:在完成Mark Hamilton的建议后,我发现问题是我的查询。在返回上设置断点表明tickettoview从未填充过Customer。所以这缩小了,但我仍然不确定如何填充公司属性。

再次,谢谢!

2 个答案:

答案 0 :(得分:2)

马特的回答给了我这方面所需的词汇,并最终带我到this page。将.Include("Company")添加到我的数据集中会填充公司属性。

var tickettoview = ( from t in _db.Ticket.Include("Company")
                     where t.TicketID == id
                     select t ).First();

答案 1 :(得分:1)

这听起来像我问this question时遇到的问题一样。请参阅描述我如何修复它的answer I posted

我使用的是Linq to SQL而不是Linq to Entities,但我假设DataLoadOptions和LoadWith方法(或类似的东西)仍然有效。如果我错了,那么对实体框架更有了解的人可以纠正我。