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

C# 4.0 如何将参数传递给EF存储过程?,c#-4.0,entity-framework-4,C# 4.0,Entity Framework 4,我想从C代码调用存储过程。我就是这样尝试的: var result = db.ExecuteStoreCommand("TaskSchedule", new object[] { new ObjectParameter("treatmentDateFrom", dateTime)}); 但是,我得到以下错误: 不存在从对象类型System.Data.Objects.ObjectParameter到已知托管提供程序本机的映射 类型 你能告诉我我做错了什么吗 我看过很多关于从SP获取值的帖子,但

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

var result = db.ExecuteStoreCommand("TaskSchedule", new object[] { new ObjectParameter("treatmentDateFrom", dateTime)}); 
但是,我得到以下错误:

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

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

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


提前感谢您的帮助。

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

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

关于导入SP


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

通过将SP映射到ObjectContext,通过EF访问存储过程非常容易

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

关于导入SP


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

我已将其作为导入函数添加到EDMX中。但是没有办法给它添加任何参数。EDMX无法看到此过程接受任何参数,尽管SQL Management studio接受。我尝试手动编辑EDMX,并添加了这些参数。我还刷新了导入功能。现在我可以使用适当的参数调用这个过程:var result=db.TaskSchedule(DateTime.Now,…);它编译正确,但我收到以下错误:存储数据提供程序返回的数据读取器没有足够的列用于请求的查询。我已将其作为导入函数添加到EDMX。但是没有办法给它添加任何参数。EDMX无法看到此过程接受任何参数,尽管SQL Management studio接受。我尝试手动编辑EDMX,并添加了这些参数。我还刷新了导入功能。现在我可以使用适当的参数调用这个过程:var result=db.TaskSchedule(DateTime.Now,…);它编译正确,但我收到以下错误:存储数据提供程序返回的数据读取器没有足够的列用于请求的查询。