传递参数以返回存储过程的复杂结果

本文关键字:复杂 结果 存储过程 返回 参数 | 更新日期: 2023-09-27 18:23:44

我能够通过"从数据库更新模型"向导成功添加存储过程。对于不需要任何输入参数的存储过程,我可以轻松地检索复杂的查询。

但是,我无法返回需要输入参数的存储过程的结果。我尝试在C#类中传递它,并将其存储在"结果"中,如下所示:

//20 is the value I am passing into my stored procedure    
IEnumerable<MyClass> result = _db.MyStoredProcedure(20).Select(x => new MyClass(){....});
return result;

但是我无法检索结果,因为"int"不包含"Select"的定义。

我相信这是因为我需要在模型浏览器的复杂类型中有一个结果类型。我可以创建自定义的,但是,我无法将存储过程中的返回值转换为这些值,因为我无法设置该参数。

我确实注意到,在我的存储过程中,它有一个需要在Database.Store位置下的"存储过程/函数"文件夹中初始化的变量。有什么方法可以将其设置为我想要传递的值吗?(我在模型浏览器中检查了该特定ID的属性)

或者,也许我想错了。

任何帮助都会很棒。

提前谢谢。

传递参数以返回存储过程的复杂结果

我对这个问题的解决方案真的很简单。

因此,传递参数可以正常工作。实际上,在我的问题中,我应该把20代入前面提到的例子中。问题出在存储过程本身。

由于ADO没有内置的设置/传递参数的方法,您需要手动修改SQL查询,以执行存储过程应该执行的操作。因此,我修改了存储过程,使用打印出它应该执行的内容

print result

然后从"messages"中复制并粘贴存储过程的结果(因此我使用通常传递的参数进行选择)。然后,我在模型浏览器中重新编辑函数导入,点击"获取列信息",获得我特别想要的复杂结果类型。

它有效!