在LINQ to sql DataContext设计器中通过从服务器资源管理器中拖动存储过程来创建存储过程时,设计器将分析该存储过程,以确定它是否返回结果集。除非它具有沉重的动态sql,否则通常都是这样。
如果是这样,则生成的方法将返回ISingleResult<T>
whereT
是根据对sproc进行分析以生成适合结果集形状的类,或者是在sproc属性页中指定的类。因为ISingleResult
从派生IEnumerable
,大多数人对结果进行简单的foreach以获得他们的结果集。但大多数人忘记的是,ISingleResult
还 派生自IFunctionResult
,其中有一个叫做财产@L_301_0@。 这是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
}
}