我有一個存儲過程返回一個值,而不是數據集,我有問題讓它與EF4一起工作。使用參數調用存儲過程
我已經看到了這一點:http://dotnet.dzone.com/news/how-retrieve-stored-procedure
這裏是我所做的:我添加了一個過程模型,並導入功能。
我遇到的第一個問題是,我的過程中的參數被命名爲@_Parameter_in
。這使得EF將它們作爲p_Parameter_in
帶入,因爲它不會與下劃線一起作爲第一個字符。然後,當我調用存儲過程時,我可以在SQL Profiler調用中看到它尋找@p_Parameter_in
,當然還有一個問題。
現在我重新命名了這些參數並查看了SQL Trace - 一切都看起來很棒。問題是我無法獲得價值。這裏是我的代碼的外觀:
System.Data.Objects.ObjectParameter newKey = new System.Data.Objects.ObjectParameter("NewKey_out", typeof(Int32));
newKey.Value = 0;
context.GetNextSurrogateKey_v2("tTest", newKey);
調用newKey.Value
後,它總是0或任何值我將其設置爲。它不會帶來價值。我懷疑我的問題是如何導入功能。我使用標量和數據類型Int32
。出於某種原因,「爲我創建新的複雜類型」已禁用。有人有這個問題嗎?
這是值得關注的東西,我可能只是修改程序來這樣工作。目前我不會返回標量值。我將值賦給存儲過程中的OUTPUT參數。 – katit
這也行不通。我得到錯誤「由商店數據提供商返回的數據讀取器沒有足夠的列來查詢請求」 – katit
好吧,我讓它工作。在存儲過程的末尾放置選擇@MyValue。如果可以在EF中使用OUTPUT參數,問題仍然是開放的。 – katit