2011-12-19 95 views
1

我想從C#代碼中調用存儲過程。這是我嘗試:如何將參數傳遞給EF存儲過程?

var result = db.ExecuteStoreCommand("TaskSchedule", new object[] { new ObjectParameter("treatmentDateFrom", dateTime)}); 

但是我收到以下錯誤:

No mapping exists from object type System.Data.Objects.ObjectParameter to a known managed provider native type.

可否請你告訴我我究竟做錯了什麼?

我見過很多關於從SP中獲取值的帖子,但我想將我的參數傳遞給SP。我正在使用EF4。

感謝您的幫助。

回答

1

訪問存儲過程槽通過將SP映射到ObjectContext,EF可以變得非常簡單。

在您的EDMX設計器中,您可以導入存儲過程並將結果映射到新類型或現有類型。在此之後,SP成爲對象上下文的強類型函數。

Here is some documentation關於導入SP的。

如果您不想導入SP並使用ExecuteStoreCommand,則需要確保在命令文本中指定了參數,並且它們的類型爲SqlParameter,其名稱和值正確。

+0

我已經將它添加到EDMX作爲導入功能。但是沒有辦法給它添加任何參數。 EDMX不能看到這個過程採用任何參數,儘管SQL Management Studio的確如此。 我試圖手動編輯EDMX,並添加了這些參數。我也刷新了導入功能。現在我可以用以下參數調用這個過程: var result = db.TaskSchedule(DateTime.Now,...); 它編譯正確,但是我得到以下錯誤: 由商店數據提供商返回的數據讀取器沒有足夠的列來查詢請求。 – user1089583 2011-12-19 12:19:46

+0

請問http://msdn.microsoft.com/en-us/library/bb896334.aspx有幫助嗎? – 2011-12-19 12:28:39

相關問題