我正在学习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。所以这缩小了,但我仍然不确定如何填充公司属性。
再次,谢谢!
答案 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方法(或类似的东西)仍然有效。如果我错了,那么对实体框架更有了解的人可以纠正我。