实现linq存储过程返回多条结果集

曾经被linq存储过程返回多个结果所困扰,今晚加班,问题解决,分享一下思路:

linq存储过程默认生成的代码是ISingleResult的,也就是只能返回一条结果集,我们先动手脚,将其改 成IMultipleResults 的.实体类根据不同情况更改.

linq存储过程更改前:

[Function(Name="dbo.MeterTaskStat")]
public ISingleResult<XXXX> MeterTaskStat
([Parameter(Name="MeterTaskType", DbType="Int")]
  System.Nullable<int> meterTaskType,
[Parameter(Name="StartDate", DbType="DateTime")]
  System.Nullable<System.DateTime> startDate,
  [Parameter(Name="EndDate", DbType="DateTime")]
System.Nullable<System.DateTime> endDate)
{
  IExecuteResult result =
this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())),
  meterTaskType, startDate, endDate);
  return ((ISingleResult<XXXXXX>)(result.ReturnValue));
}

linq存储过程更改后:

[Function(Name="dbo.MeterTaskStat")]
[ResultType(typeof(TaskStatData))]
public IMultipleResults MeterTaskStat
([Parameter(Name = "MeterTaskType", DbType = "Int")]
System.Nullable<int> meterTaskType,
[Parameter(Name = "StartDate", DbType = "DateTime")]
  System.Nullable startDate,
[Parameter(Name = "EndDate", DbType = "DateTime")]
  System.Nullable endDate)
{
  IExecuteResult result =
this.ExecuteMethodCall
(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())),
meterTaskType, startDate, endDate);
return ((IMultipleResults)(result.ReturnValue));
}

时间: 2024-10-29 10:32:42

实现linq存储过程返回多条结果集的相关文章

mybatis-Mybatis调用存储过程返回多个结果集

问题描述 Mybatis调用存储过程返回多个结果集 存储过程返回两个结果集(游标). CREATE?OR?REPLACE?FUNCTION?t_user_func(id?varchar(20)) ??RETURNS?SETOF?refcursor?AS $BODY$ Declare code?refcursor; result?refcursor; BEGIN????? ??--返回错误码 ??OPEN?code?FOR?select?1010?as?code; ??RETURN?NEXT?co

ADO 调用存储过程返回多个记录集的问题(关于存储过程内Set NoCount On的作用)

  最近在 CSDN 上回答了好几个网友大致相同的问题 http://community.csdn.net/Expert/TopicView.asp?id=4131244 http://community.csdn.net/Expert/TopicView.asp?id=4156955 大致都是问:为什么没有返回数据集或将记录集赋给表格控件出错 产生问题的原因大致有几个 1.不清楚 ADO.Connection.Execute 的返回机制,所有使用该方法返回的记录集都是只读,仅向前游标的 所以赋

分享:在存储过程中使用另一个存储过程返回的查询结果集的方法_MsSql

很多查询类的存储过程会返回一个表结构的结果集,如果在其他存储过程中需要用到这个结果集,为了避免编写重复的sql脚本,可以直接使用前者的查询结果. 如,存储过程sp_GetBorrowRecord @BeginTime,@EndTime 可以查询出某一时间范围(开始时间@BeginTime,结束时间@EndTime)内的所有借书记录.这个存储过程可以用于对借书记录的查询页面.       现在需要实现另一个功能:将某时间段内的借书记录进行汇总分析.如按被借阅的书籍类型进行分组,并按各类书籍的借书总

返回多个记录集的存储过程-ASP调用存储过程

存储过程|记录集 本文最先介绍的是返回记录集的存储过程.有时候,需要一个存储过程返回多个记录集,在ASP中,如何同时取得这些记录集呢?为了说明这一问题,在userinfo表中增加两个字段:usertel及usermail,并设定只有登录用户可以查看这两项内容. /*SP7*/CREATE PROCEDURE dbo.getUserInfo@userid int,@checklogin bitasset nocount onbeginif @userid is null or @checklogi

使用VB调用Oracle程序包内的存储过程返回结果集

oracle|程序|存储过程        在实际的项目开发中我们需要通过VB(或其他语言工具)调用Oracle程序包内的存储过程返回结果集.这里以短信运营平台中的一个调用为例来说明这个过程,希望对你有所帮助. --一.使用SQL*Plus创建以下项目:--1.建表("OW_SMP"为方案名称,下同) CREATE TABLE "OW_SMP"."SM_Send_SM_List"(    SerialNo INT  PRIMARY KEY,  -

mybatis-如何通过MyBatis获取mysql存储过程返回的不确定个数的多个结果集?

问题描述 如何通过MyBatis获取mysql存储过程返回的不确定个数的多个结果集? (网上搜到的案例,都是固定个数的多个结果集的场景,比如这种:http://www.iteye.com/problems/78259 .**请注意,我的问题与此不同**.) 我需要返回不确定个数个结果集.MySQL存储过程形如: while(i <= n + 1) do select * from t_tab t where t.a = i limit 020;end while 其中,**n是外部传入的.结果集

一个通过Oracle8i存储过程,返回记录集的程序包(存储过程)

oracle|程序|存储过程|记录集 提示:在Oracle8i中,如果需要通过存储过程返回结果集, 需要使用游标! CREATE OR REPLACE  PACKAGE BODY "SMS_PAY"."SMSMAINT"                                                                               IS  --功能描述:查询代理银行交易流水信息 writer: wang haibo 200

php调用存储过程返回结果集

php调用存储过程返回结果集,解决can't return a result set in the given context错误的方法需要php调用存储过程,返回一个结果集,发现很困难,找了半天,终于在老外的论坛上找到解决方案,这里本地化一下. 关键就是两点 1)define('CLIENT_MULTI_RESULTS', 131072); 2)$link = mysql_connect("127.0.0.1", "root", "",1,CL

C#调用ORACLE存储过程返回结果集及函数

oracle|存储过程|函数   ORACLE段:首先在ORACLE建立PACKAGE和PACKAGE BODY,将在这里面定义函数和存储过程返回结果集.1:建立PACKAGE:CREATE OR REPLACE package SCOTT.pk_wtistype mytype is ref cursor;procedure p_wt(mycs out mytype);function f_get(str in varchar2)return varchar2;end; /说明:其实PACKAG