2014-03-26 89 views
0

我在SQL Server中有一個存儲過程,此過程返回結果集中的數據或 錯誤消息。在Entity Framework中執行存儲過程不會返回數據

我有一個視圖模型,與存儲過程中的結果集檢索領域,我執行類似的下一條指令

IEnumerable<StateVM> states= context.Database.SqlQuery<StateVM>(
       "Calculate_State_1 {0}, {1}, {2}, {3}, {4}, {5}, {6}", 
       _from, _to, 8, 'Type1, Id1, Id2, StrError); 

的程序。當我執行在SQL參數查詢,他們是數據,但是在實體框架「狀態」中返回與指定的轉換有關的內容,從類型System.String物化到System.Int32是無效的。

我做錯了什麼?

+1

檢查空值,空字符串和尾部的空格,我不跟隨這名:'與指定的轉換relationed從System.String類型物化爲System.Int32不valid'東西。完全按照您收到的錯誤信息發佈。 – paqogomez

+0

Code-First?數據庫第一?你的存儲過程是什麼樣的? – markpsmith

+0

打電話給我老式的,但是當涉及到調用存儲過程時,我甩掉EF並返回到ADO.Net(這是EF在封底下使用的東西)。是的,這是更多的工作,但它的回報是有益的,因爲它有很好的文件記錄,你不必處理這樣的事情。 –

回答

-1

您應該能夠像執行方法調用一樣執行存儲過程,就像執行表格一樣。

+0

我該怎麼做?添加商店程序,創建導入功能等等...... ???? – user1039875

+0

如果您允許VS創建您的數據模型,請選中存儲過程旁邊的複選框,或者在服務器資源管理器中創建一個sql連接並將存儲的特效拖放到您的模型上。或者只需打開.dbml/.edmx文件,然後將對象拖放到模型上。 – Rickey

-1

考慮不要將EF用於存儲過程調用,而應使用ADO.Net。它有很好的文件記錄,您遇到的任何問題都必須多次解決。

ADO.Net Using Stored Procedures

0

你並沒有完全發佈您的錯誤信息,但似乎在文字的過程導致了collumn是和整型在StateVM類,所以EF不能做這種轉換。在結果集

+0

我嘗試了一些東西,我用單個屬性重寫VM,SP返回的一個字段,我知道字段是和String,並且錯誤仍然存​​在。 – user1039875

相關問題