如何将参数传递给EF存储过程?

时间:2011-12-19 11:08:22

标签: c#-4.0 entity-framework-4

我想从C#代码调用存储过程。这就是我尝试的方式:

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

但是我收到以下错误:

  

从对象类型System.Data.Objects.ObjectParameter到已知的托管提供程序本机不存在映射   类型。

你能告诉我我做错了什么吗?

我看过很多关于从SP获取值的帖子,但我想将我的参数传递给SP。我正在使用EF4。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

通过将SP映射到ObjectContext,可以非常轻松地通过EF访问存储过程。

在EDMX设计器中,您可以导入存储过程并将结果映射到新类型或现有类型。在此之后,SP成为对象上下文中的强类型函数。

Here is some documentation关于导入SP' s。

如果您不想导入SP并使用ExecuteStoreCommand,则需要确保在命令文本中指定参数,并且它们的类型为SqlParameter,且名称和值正确。