【问题标题】:Selecting an entity doesn't subselect associated entities选择实体不会子选择关联实体
【发布时间】:2009-05-12 05:53:19
【问题描述】:

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

我有以下数据:

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

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

因此,每张票都与特定的公司相关联。我正在尝试为工单创建详细信息视图,并且我想显示公司名称。这是我目前设置的内容。

型号

一个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。所以这缩小了范围,但我仍然不确定如何填充 Company 属性。

再次感谢您!

【问题讨论】:

  • 是的,堆栈跟踪会很好。

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


【解决方案1】:

Matt 的回答为我提供了所需的词汇,并最终将我带到了this page。将 .Include("Company") 添加到我的数据集中填充了 Company 属性。

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 我不知道如何使用 DataLoadOptions,但我现在意识到问题出在我的控制器上,查询没有运行子查询。我将编辑我的问题。
    • 啊! “Linq to entity”是我在 Google 中找到答案所需的词汇。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-19
    • 1970-01-01
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多