我想知道如何从参数实体框架发送到存储过程?提前致谢。如何将参数传递给实体框架中的存储过程?
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. 如何使用实体框架将表值参数传递到存储过程
- 3. 将参数传递给存储过程
- 4. 如何在实体框架通存储过程的DateTime参数
- 5. 使用实体框架传递存储过程的位字段参数4.1
- 6. 存储过程中的表值参数和实体框架4.0
- 7. 如何将Datetime值作为参数传递给存储过程?
- 8. 如何将参数传递给存储过程
- 9. 如何将参数传递给EF存储过程?
- 10. C#Winforms - 如何将参数传递给SQL Server存储过程
- 11. 如何将表名作为参数传递给存储过程?
- 12. 如何将参数传递给SQL存储过程?
- 13. 如何将列表作为参数传递给实体框架中的查询?
- 14. 通过实体框架将整数的数组传递给T-SQL存储过程
- 15. 异常,而使用实体框架枚举值传递给存储过程6
- 16. 如何使用实体框架将数据列表传递给存储过程6
- 17. 将查询结果传递给存储过程中的参数
- 18. 将值传递给存储过程中的参数
- 19. 将参数传递给c中的sql存储过程#
- 20. 将数组传递给存储过程
- 21. 实体框架MySQL的存储过程
- 22. 从实体框架的存储过程
- 23. 将可变数量的参数传递给存储过程
- 24. 将动态数量的参数传递给存储过程
- 25. 存储过程参数名称和实体框架
- 26. 如何将动态SQL存储过程的值返回给实体框架?
- 27. 存储过程与实体框架
- 28. 实体框架4.0和存储过程
- 29. SQL存储过程实体框架VB.Net
- 30. 实体框架和MySql存储过程
我使用的是.NET 4.我的存储过程从我正在查询的数据表中返回值。但我想从我的程序中传递参数给我的存储过程。 –
@SatishNissankala:大大更新了我的回复 - 有帮助吗? –
Thankyou marc_s。这真的很有帮助。 –