如何实现linq存储过程返回多条结果集
发表于:2024-11-25 作者:千家信息网编辑
千家信息网最后更新 2024年11月25日,这篇文章将为大家详细讲解有关如何实现linq存储过程返回多条结果集,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。linq存储过程默认生成的代码是ISi
千家信息网最后更新 2024年11月25日如何实现linq存储过程返回多条结果集
这篇文章将为大家详细讲解有关如何实现linq存储过程返回多条结果集,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
linq存储过程默认生成的代码是ISingleResult的,也就是只能返回一条结果集,我们先动手脚,将其改成IMultipleResults 的.实体类根据不同情况更改.
linq存储过程更改前:
[Function(Name="dbo.MeterTaskStat")] public ISingleResultMeterTaskStat([Parameter(Name="MeterTaskType", DbType="Int")] System.Nullable 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 ((ISingleResult )(result.ReturnValue)); }
linq存储过程更改后:
[Function(Name="dbo.MeterTaskStat")] [ResultType(typeof(TaskStatData))] public IMultipleResults MeterTaskStat([Parameter(Name = "MeterTaskType", DbType = "Int")] System.NullablemeterTaskType, [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)); }
注意到 多一条: [ResultType(typeof(TaskStatData))] 的记录吧,简单介绍一下,必须得为linq存储过程的结果返回一个实体类型,而TaskStatData就是自己定义的类,[ResultType(typeof(TaskStatData))]必须加上,加linq存储过程回值.
linq存储过程:
set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go -- =================================================== -- Author:MaHong -- Create date: 2008-09-11 -- Description: 根据口径统计某段时间内水表复装任务信息 -- =================================================== ALTER PROCEDURE [dbo].[MeterTaskStat] @MeterTaskType INT, @StartDate DateTime, @EndDate DateTime AS BEGIN SET NOCOUNT ON; SELECT MeterCaliberName,SUM(Requisition) AS RequisitionCount,SUM(Approve) AS ApproveCount, SUM(Disapprove) AS DisapproveCount,SUM(WaitWork) AS WaitWorkCount, SUM(CompleteY) AS CompleteYCount,SUM(CompleteN) AS CompleteNCount, SUM(Requisition+Approve+Disapprove+WaitWork+CompleteY+CompleteN) AS Subtotal FROM (SELECT MeterCaliberName ,CASE WHEN MeterTaskStatus=0 THEN 1 ELSE 0 END Requisition ,CASE WHEN MeterTaskStatus=1 THEN 1 ELSE 0 END Approve ,CASE WHEN MeterTaskStatus=11 THEN 1 ELSE 0 END Disapprove ,CASE WHEN MeterTaskStatus=2 THEN 1 ELSE 0 END WaitWork ,CASE WHEN MeterTaskStatus=4 THEN 1 ELSE 0 END CompleteY ,CASE WHEN MeterTaskStatus=5 THEN 1 ELSE 0 END CompleteN FROM View_MeterTaskMaintain WHERE [MeterTaskType] = @MeterTaskType AND StartDate BETWEEN @StartDate AND @EndDate) tempTable GROUP BY MeterCaliberName END
linq存储过程之在business中间层直接调用:
public class StatTaskControl : ControlBase { public IEnumerable GetStatInfo(TaskType type, DateTime startDate, DateTime endDate) { IMultipleResults info = Context.MeterTaskStat((int)type, startDate, endDate); IEnumerable data = info.GetResult(); return data; } }
linq存储过程之ui层获取:
protected void StatButton_Click(object sender, EventArgs e) { DateTime startDate = DateTime.Parse(StartDate.Text); DateTime endDate = DateTime.Parse(EndDate.Text); TaskType type = TaskType.Remove; IEnumerable info = _control.GetStatInfo(type, startDate, endDate); List data = info.ToList(); RemoveGridView.DataSource = data; RemoveGridView.DataBind(); }
整个linq存储过程大概就是这么几步.也不是太困难!
关于如何实现linq存储过程返回多条结果集就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
过程
存储
结果
多条
内容
实体
就是
文章
更多
知识
篇文章
不同
不错
困难
中间层
也就是
代码
任务
信息
口径
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
本地服务器配置
服务器ups电源主机
如何找某电商线上数据库
ac服务器管理
网速慢不能连接服务器
夹江县惠康网络技术服务有限公司
电脑显示无网络安全怎么办
软件开发多少税率
免费的冷库软件开发
网络安全法72条解读
国内外金融数据库的发展对比
安全牛网络安全百强
中国网络安全法是什么时候
计算机网络技术与互联网
系统软件开发公司排名
王者服务器错误是什么意思
城镇供水系统基础数据库
dba创建数据库的原则
兼职网络安全工程师
软件开发都有什么系统
山西税务总局网络安全宣传
网络安全封面本
魅族 访问服务器出错
广东c语言软件开发多少钱
工商银行网络安全攻防
玖二柒互联网科技公司
怎么看ca服务器的ip地址
服务器操作系统类型查询
四年级网络安全教育班会
重点领域网络安全态势感知