2011-12-26 85 views
0

我得到了以下情況。我有DeliverersPromotions表與DelivererId關聯Promotions(外鍵)。在我的MVC應用程序,我只是這個代碼顯示的促銷名單:導航屬性視圖

    promotions = db.Promotions. 
        Include("Deliverers1"). 
        Where(p => p.WeekNo == currentWeek). 
        OrderByDescending(p => p.WeekNo); 

我被要求增加(其它表SELECT COUNT(*)),這是動態計算的另一列。我的解決方案是創建一個視圖爲select *, count(....) from Promotions ...

問題是我的視圖沒有Deliverers1導航屬性,我不知道如何添加它。有什麼建議麼?

回答

0

如果另一臺是該實體的屬性導航:

var promotions = db.Promotions. 
        Include("Deliverers1"). 
        Where(p => p.WeekNo == currentWeek). 
        OrderByDescending(p => p.WeekNo) 
        .Select(p=>new {p,p.Count(...)); 

如果不是屬性導航:

var promotions = db.Promotions. 
        Include("Deliverers1"). 
        Where(p => p.WeekNo == currentWeek). 
        OrderByDescending(p => p.WeekNo) 
        .Select(p=>new {p,db.othertable.Where(q=>q.foo==p.foo).Count()); 
+0

感謝名單,但有兩個問題:1)什麼是SQL結果 - 加入? 2)結果,我得到匿名類型。我想我的MVC視圖是強類型的... – Marcin 2011-12-27 07:33:22

+0

你可以用http://code.google.com/p/mvc-mini-profiler/檢查你生成的sql的有它的EF代碼第一支持,也可以安裝它通過nuget包,檢查出來。 – 2011-12-27 07:44:23

+0

它肯定是一個連接,你可以在intellitrace查詢中看到,如果你的強類型if是Foo,你必須寫p => new Foo {...} – 2011-12-27 10:29:58