如何解决是否可以使用LINQ从存储过程中返回返回值和结果集
在LINQ to sql DataContext设计器中通过从服务器资源管理器中拖动存储过程来创建存储过程时,设计器将分析该存储过程,以确定它是否返回结果集。除非它具有沉重的动态sql,否则通常都是这样。
如果是这样,则生成的方法将返回ISingleResult<T>
whereT
是根据对sproc进行分析以生成适合结果集形状的类,或者是在sproc属性页中指定的类。因为ISingleResult
从派生IEnumerable
,大多数人对结果进行简单的foreach以获得他们的结果集。但大多数人忘记的是,ISingleResult
还
派生自IFunctionResult
,其中有一个叫做财产ReturnValue
。 这是sproc的返回值。
因此,您所要做的只是以下几方面的事情:
using(var dc = new MyDataContext())
{
var results = dc.MyStoredProcedure();
var returnValue = (int)results.ReturnValue; // note that ReturnValue is of type object and must be cast.
foreach(var row in results)
{
// process row
}
}
解决方法
寻找关于获取返回值和结果集的最干净方法的建议(不将引用的参数传递给存储的proc)。
MY存储的proc具有返回值以显示错误等,并且它们以select语句结尾以获取信息。使用常规命令,我将创建一个包含返回值的输出参数。我无法更改数据库中存储的proc,因此除了返回值之外,我无法传递其他输出参数。
想法??
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。