我想知道如何從參數實體框架發送到存儲過程?提前致謝。如何將參數傳遞給實體框架中的存儲過程?
5
A
回答
6
第一個問題是:針對實體框架的版本? .NET 3.5? .NET 4 ??事情已經改變了顯著(和改進!)在.NET 4
其次:你想做什麼:
從數據庫
檢索行執行一個存儲過程,而不返回值
地圖插入/更新/刪除的實體操作,一個存儲過程??
這些是三個不同的場景 - 所以我們需要知道你要做什麼。
另外:剛剛與谷歌(或Bing)搜索 - 有博客文章的大量和教程在那裏向您展示如何做到這一點 - 一個快速列表:
- Entity Framework with .NET 3.5 and VS 2008 SP1
- Using a Stored Procedure in Entity Framework 4
- Call Stored Procedure from Entity Framework
和數以千計更多......
更新:好了,你想從數據庫中檢索數據。在這種情況下,你的步驟是:
- 去你的EF模型(* .edmx文件)在設計
- 右鍵單擊並選擇
Update Model from Database
- 選擇你要使用的存儲過程和去通過嚮導
這將創建存儲過程中的條目您物理儲存模式。下一頁:
- 轉到
Model Browser
(?見上面的上下文菜單剛好低於Update Model from Database
),導航到存儲模型,找到你的程序 - 該過程的
右擊
- 選擇
Add Function Import
從物理存儲模型導入「功能」(存儲程序)插入概念ual模型(您的實體上下文類,基本上)。
在這裏,你有四種選擇:
- 您的存儲過程可能不會(我的樣品等)任何回報 - 那麼它只是一個方法,你的上下文類,你可以調用這個函數
- 你的存儲過程可能返回一個標量集合,例如INT值列表或其他內容 - 在下拉列表中選擇適當的值
- 您的存儲過程可能會從您的模型返回個實體,例如,完整
Customer
實體 - 在這種情況下,選擇最後一個選項,並選擇您想要映射到實體(你的存儲過程必須返回所有列的是實體,在這種情況下)
OR:
- 您的存儲過程會返回一些東西 - 但既不是標量(不僅僅是INT),也不是實體 - 在這種情況下,您可以選擇第三個選項並定義一個新的複雜類型(一個類)存儲過程。
無論你做 - 基本上EF將建立一個關於您的對象上下文類方法,你可以調用。您存儲的proc所需的任何參數將爲該方法的參數,因此您可以非常輕鬆地通過例如。字符串,整數等
2
另一種情況是需要調用具有多個OUTPUT參數的存儲過程。以下是一個完整的示例。
public void MyStoredProc(int inputValue, out decimal outputValue1, out decimal outputValue2)
{
var parameters = new[] {
new SqlParameter("@0", inputValue),
new SqlParameter("@1", SqlDbType.Decimal) { Direction = ParameterDirection.Output },
new SqlParameter("@2", SqlDbType.Decimal) { Direction = ParameterDirection.Output }
};
context.ExecuteStoreCommand("exec MyStoredProc @[email protected], @[email protected] output, @[email protected] output", parameters);
outputValue1 = (decimal)parameters[1].Value;
outputValue2 = (decimal)parameters[2].Value;
}
請注意使用的類型(十進制)。如果需要另一種類型,記得不僅改變它在方法參數列表也是SqlDbType.XXX
。
相關問題
- 1. 如何使用實體框架將可選參數傳遞給存儲過程?
- 2. Asp.Net將參數傳遞給實體框架中的存儲過程MODEL
- 3. 實體框架將複雜類型參數傳遞給存儲過程
- 4. 將參數傳遞給存儲過程實體框架與SQL Server 2005
- 5. 如何使用實體框架將表值參數傳遞到存儲過程
- 6. 如何通過實體框架將空值傳遞給存儲過程?
- 7. 將參數傳遞給存儲過程
- 8. 如何將實體框架SqlQuery和SqlParameter中的日期時間參數傳遞給存儲過程?
- 9. 如何將參數傳遞給實體框架模型?
- 10. 如何通過實體框架將空值傳遞到存儲過程?
- 11. 如何在實體框架通存儲過程的DateTime參數
- 12. 使用實體框架傳遞存儲過程的位字段參數4.1
- 13. 如何將數組參數傳遞給存儲過程?
- 14. 傳遞參數給存儲過程
- 15. 存儲過程中的表值參數和實體框架4.0
- 16. 將參數從存儲過程傳遞給函數(在存儲過程中)
- 17. 如何將參數傳遞給EF存儲過程?
- 18. 如何將參數傳遞給Oracle存儲過程在SSIS包
- 19. C#Winforms - 如何將參數傳遞給SQL Server存儲過程
- 20. 如何將參數傳遞給存儲過程
- 21. 如何將輸出參數傳遞給存儲過程?
- 22. 如何將表名作爲參數傳遞給存儲過程?
- 23. 如何將參數傳遞給存儲過程
- 24. 如何將參數傳遞給SQL存儲過程?
- 25. 如何將Datetime值作爲參數傳遞給存儲過程?
- 26. 如何將列表作爲參數傳遞給實體框架中的查詢?
- 27. 如何將參數傳遞給實體框架中的DbSet.SqlQuery方法
- 28. 通過實體框架將整數的數組傳遞給T-SQL存儲過程
- 29. 異常,而使用實體框架枚舉值傳遞給存儲過程6
- 30. 如何使用實體框架將數據列表傳遞給存儲過程6
我使用的是.NET 4.我的存儲過程從我正在查詢的數據表中返回值。但我想從我的程序中傳遞參數給我的存儲過程。 –
@SatishNissankala:大大更新了我的回覆 - 有幫助嗎? –
Thankyou marc_s。這真的很有幫助。 –