2012-07-27 29 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

相關問題