商店数据提供程序返回的数据读取器没有足够的列用于请求的查询

时间:2013-08-29 07:15:34

标签: sql-server entity-framework c#-4.0 stored-procedures

我正在使用Entity Framework。我创建了一个名为Customer的实体对象,并添加了我的存储过程。我的存储过程包含另外两个存储过程,它在输出参数中返回一些字符串。并且我在主存储过程中连接两个存储过程的输出参数值。主存储过程也返回输出参数中的结果字符串。我还为主存储过程创建了一个函数import来返回连接的字符串。当我运行我的应用程序时,我得到“商店数据提供程序返回的数据读取器没有足够的列用于请求的查询。”我在第一个和第二个程序中没有select语句。让我知道如何返回主存储过程的输出参数值。

在下方查找更多信息。

Create Procedure MainProcedure
@Id int,
@MainResult nvarchar(max) output
AS
Begin
declare @firstResult nvarchar(max)
declare @secondResult nVarchar(max)
declare @MainResult nVarchar(max)

Exec FirstSP @Id,@firstResult Output
Exec SecondSP @Id,@secondResult Output

Set @MainResult=@firstResult+@secondResult

End

实体代码看起来像

System.Data.Objects.ObjectResult<string> resultList = null;
     var OutputParamter =new ObjectParameter("MainResult",typeof(string));
        resultList = ent.MainProcedure(ID, OutputParamter);

1 个答案:

答案 0 :(得分:0)

我看不到您的存储过程可以为您提供更多帮助,但是当我使用存储过程并试图通过“ return”语句(如

)获取返回值时,此错误就摆在我面前。
IF EXISTS (SELECT * FROM Table) 
    return 0

这在sql服务器上可以正常工作,但在EF上却不能。

对我来说,解决方案是将select语句替换为return语句,

IF EXISTS (SELECT * FROM Table) 
    --return 0
    select @OUTPUT=0

link了解更多信息。