2009-06-13 78 views
1

如何在ADO.NET實體框架中調用沒有錯誤的存儲過程?如果我使用下面的代碼,我得到一個錯誤:如何在ADO.NET實體框架中調用存儲過程而不出錯?

adminNameContext.AddItemCategory(12, "ggf", DateTime.Now); 

錯誤:

數據讀取器與指定的「NetTanitimTestModel.Categories」不兼容。類型'ID'的成員在數據讀取器中沒有相應的列,名稱相同。

ALTER procedure [dbo].[sp_AddItemCategory] 
( 
    @item int, 
    @category nvarchar(50), 
    @date smalldatetime 
) 
as 
begin 
    if(@item=-1) 
    begin 
    insert into Categories(PARENTID,Category,Date) values(null,@category,@date) 
    end 
    else 
    begin 
    insert into Categories(PARENTID,Category,Date) values(@item,@category,@date) 
    end 
end 

我有一個已經得到了3列分類表:PARENTID,類別,日期

+1

錯誤說明了一切:你想在結果(「ID」),這是不是有引用列... – 2009-06-13 11:15:20

+0

向我們展示了存儲過程是什麼樣子(T-SQL代碼),並向我們展示它運行哪個表(表結構) – 2009-06-13 12:04:12

回答

0

它看起來好像您的EF數據模型和您的數據庫不再同步。看起來好像EF數據模型中的「類別」對象有一個「ID」字段,但表中沒有。

我會從數據庫更新EF數據模型,看看是否解決了這個問題。爲此,打開EDMX設計器並右鍵單擊設計界面中的空白區域,然後選擇「從數據庫更新模型」選項。這應該使兩個世界重新同步。

馬克

0

米奇小麥給你答案。您正在嘗試使用ID列,但該表具有PARENTID列。