在ExecuteStoreQuery EF中执行存储过程.这是EF中的一个错误吗?

use*_*080 4 entity-framework

尝试使用以下代码在EF中执行存储过程:

var params = new object[] {new SqlParameter("@FirstName", "Bob")};
return this._repositoryContext.ObjectContext.ExecuteStoreQuery<ResultType>("GetByName", params);
Run Code Online (Sandbox Code Playgroud)

但不断收到此错误:

过程或函数'GetByName'需要参数'@FirstName',这是未提供的.

从sql profiler:

exec sp_executesql N'GetByName',N'@FirstName nvarchar(100),@FirstName=N'Bob'
Run Code Online (Sandbox Code Playgroud)

上面的ExecuteStoreQuery代码有什么问题?

dez*_*ler 10

忽略这个params保留字的事实......

认为您的查询需要是:

var params = new object[] {new SqlParameter("@FirstName", "Bob")};
return this._repositoryContext.ObjectContext.ExecuteStoreQuery<ResultType>("exec GetByName @FirstName", params);
Run Code Online (Sandbox Code Playgroud)

还应该说,如果该proc是数据库和数据模型的标准部分,那么您应该将其导入EDM,以便它可以直接在您的上下文中使用.