2012-07-27 25 views
1

我在控制器有一个方法:我的看法不显示我的所有db.MyDB.include(对象)

public ViewResult Index() 
{ 
    var orderdetail = db.OrderDetails.Include(o => o.Product).Include(o => o.Pack).Include(o => o.Order);   
    return View(orderdetail); 
} 

笔者认为:

<td> 
    @Html.DisplayFor(modelItem => item.Order.Username) 
</td> 
<td> 
    @Html.DisplayFor(modelItem => item.Product.Name) 
</td> 
<td> 
    @Html.DisplayFor(modelItem => item.Pack.Name) 
</td> 

在我看来,它会只显示第一个包含。所以在这里,只是我的产品,因为包括(o => o.Product)在我的包含(o => o.Pack)之前。如果我先将包放入,它将只显示我的包。我希望我的视图同时显示。我怎样才能做到这一点 ?

对不起,我的英语,谢谢你的帮助。

+0

你应该调用'.ToList()'在查询结束后,你不想被路过的一个未计算查询到您的视图。 – James 2012-07-27 12:41:51

+0

谢谢你的回答,但'返回查看(orderdetail.ToList())'不要改变任何东西,同样的问题 – Alternative 2012-07-27 12:51:50

+0

这不是你的问题的答案,它只是一些一般性的建议。你的代码看起来应该可以工作,你是否尝试过使用字符串而不是lambdas?例如包括(“产品”)。包括(“包装”)。包括(“订单”)' – James 2012-07-27 13:04:54

回答

1

看起来你不可能像这样调用Include调用,你必须明确地建立你的查询,例如,

db.OrderDetails.Include(o => o.Product); 
db.OrderDetails.Include(o => o.Pack); 
db.OrderDetails.Include(o => o.Order); 
return View(db.OrderDetails); 
+0

添加'db.OrderDetails.include(..)',var的名字就像这样'orderDetail = orderDetail.Include(...) '它不起作用。谢谢 – Alternative 2012-07-27 13:51:12

相关问题