在MVC

2014-03-06 39 views
0

從存儲過程中檢索數據我有以下兩個模型類在MVC

public partial class Items { 
    public Items() { 
     this.Items_RATINGS = new HashSet<Items_RATINGS>(); 
    } 

    public int ITEMID { get; set; } 
    public string ITEMNAME { get; set; } 
    public virtual ICollection<Items_RATINGS> Items_RATINGS { get; set; } 
} 

public partial class Items_RATINGS 
{ 
    public int ItemsID { get; set; } 
    public byte ItemsRATING { get; set; } 
    public string COMMENTS { get; set; } 
    public virtual Items Items { get; set; } 
} 

我還創建存儲過程來檢討平均評分

CREATE PROCEDURE DBO.GET_ITEM_AVERAGERATING 
@ITEMID INT 
AS 
BEGIN 
    SELECT AVG(OVERALLRATING) AS OVERALLRATING FROM ITEMS_RATINGS WHERE ITEMID = @ITEMID GROUP BY ITEMID 
END 
GO 

在模型類,我已經加入

public virtual ICollection<GET_ITEM_AVERAGERATING_Result> GET_ITEM_AVERAGERATING { get; set; } 

在控制器調用中,我試着加入

return View(db.Items.Include(c => c.GET_ITEM_AVERAGERATING).ToList()); 

但是,我沒有得到價值。它拋出一個錯誤。

+0

請注意,標籤是獨立的。也就是說,你不能合併多個標籤來創建一個概念。標籤'[stored]'和'[procedure]'與單個'[stored-procedures]'標籤不同。請務必閱讀選擇標籤時出現的說明! – Charles

回答

0

您需要將存儲過程添加到您的EDMX模型

這裏是如何做到這一點

1-打開EDMX文件

2-接下來右鍵點擊任何地方EDMX設計師並選擇添加>功能導入。

3-這將調出添加函數的嚮導。選擇您要添加的程序並選擇返回類型。

4-然後你可以從你的dbcontext調用你的存儲過程作爲一個CLR方法。

+0

謝謝。像你說的那樣。我現在正在收到以下錯誤附加信息:指定的包含路徑無效。 EntityType'ItemModel.ITEMS'不聲明名爲'GET_ITEM_AVERAGERATING'的導航屬性。 – user3382134

+0

從您項目類別中刪除GET_ITEM_AVERAGERATING。 將SP添加到edmx模型後,它將在yout dbcontext類中生成代理方法。因此,在你的Items類中移除這個導航屬性,並從你的dcontext對象中調用你的存儲過程。 –

+0

什麼類型的模型,你想返回到你的看法? –