成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

教你如何實現linq存儲過程返回多條結果集

開發 后端
linq存儲過程默認生成的代碼是ISingleResult的,也就是只能返回一條結果集,我們先動手腳,將其改成IMultipleResults 的.實體類根據不同情況更改.

linq存儲過程曾經一度困擾我。我下定決心要研究個明白,在我的仔細分析下,終于明白一些了,現在把得到的成果和大家分享一下。

linq存儲過程默認生成的代碼是ISingleResult的,也就是只能返回一條結果集,我們先動手腳,將其改成IMultipleResults 的.實體類根據不同情況更改.

linq存儲過程更改前:

  1. [Function(Name="dbo.MeterTaskStat")]  
  2. public ISingleResult<XXXX> MeterTaskStat
  3. ([Parameter(Name="MeterTaskType"DbType="Int")]
  4.  System.Nullable<int> meterTaskType, 
  5. [Parameter(Name="StartDate"DbType="DateTime")]
  6.  System.Nullable<System.DateTime> startDate,
  7.  [Parameter(Name="EndDate"DbType="DateTime")] 
  8. System.Nullable<System.DateTime> endDate)  
  9. {  
  10.  IExecuteResult result = 
  11. this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())),
  12.  meterTaskType, startDate, endDate);  
  13.  return ((ISingleResult<XXXXXX>)(result.ReturnValue));  

linq存儲過程更改后:

  1. [Function(Name="dbo.MeterTaskStat")]  
  2. [ResultType(typeof(TaskStatData))]  
  3. public IMultipleResults MeterTaskStat
  4. ([Parameter(Name = "MeterTaskType", DbType = "Int")] 
  5. System.Nullable<int> meterTaskType, 
  6. [Parameter(Name = "StartDate", DbType = "DateTime")]
  7.  System.Nullable startDate, 
  8. [Parameter(Name = "EndDate", DbType = "DateTime")]
  9.  System.Nullable endDate)  
  10. {  
  11.  IExecuteResult result = 
  12. this.ExecuteMethodCall
  13. (this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), 
  14. meterTaskType, startDate, endDate);  
  15. return ((IMultipleResults)(result.ReturnValue));  

注意到 多一條: [ResultType(typeof(TaskStatData))] 的記錄吧,簡單介紹一下,必須得為linq存儲過程的結果返回一個實體類型,而TaskStatData就是自己定義的類,[ResultType(typeof(TaskStatData))]必須加上,加linq存儲過程回值.

linq存儲過程:

  1. set ANSI_NULLS ON  
  2. set QUOTED_IDENTIFIER ON  
  3. go  
  4. -- ===================================================  
  5. -- Author:MaHong  
  6. -- Create date: 2008-09-11  
  7. -- Description: 根據口徑統計某段時間內水表復裝任務信息  
  8. -- ===================================================  
  9. ALTER PROCEDURE [dbo].[MeterTaskStat]  
  10.  @MeterTaskType INT,  
  11.  @StartDate DateTime,  
  12.  @EndDate DateTime  
  13. AS  
  14. BEGIN  
  15.  SET NOCOUNT ON;  
  16.  SELECT MeterCaliberName,SUM(Requisition) AS
  17.  RequisitionCount,SUM(Approve) AS ApproveCount,  
  18.  SUM(Disapprove) AS DisapproveCount,SUM(WaitWork) AS WaitWorkCount,   
  19.  SUM(CompleteY) AS CompleteYCount,SUM(CompleteN) AS CompleteNCount,  
  20.  SUM(Requisition+Approve+Disapprove+WaitWork+CompleteY+CompleteN) AS
  21.  Subtotal  
  22.  FROM (SELECT MeterCaliberName  
  23.  ,CASE WHEN MeterTaskStatus=0 THEN 1 ELSE 0 END Requisition   
  24.  ,CASE WHEN MeterTaskStatus=1 THEN 1 ELSE 0 END Approve   
  25.  ,CASE WHEN MeterTaskStatus=11 THEN 1 ELSE 0 END Disapprove   
  26.  ,CASE WHEN MeterTaskStatus=2 THEN 1 ELSE 0 END WaitWork   
  27.  ,CASE WHEN MeterTaskStatus=4 THEN 1 ELSE 0 END CompleteY   
  28.  ,CASE WHEN MeterTaskStatus=5 THEN 1 ELSE 0 END CompleteN  
  29.  FROM View_MeterTaskMaintain WHERE [MeterTaskType] =
  30.  @MeterTaskType AND StartDate BETWEEN @StartDate AND @EndDate) tempTable  
  31.  GROUP BY MeterCaliberName  
  32. END  
  33.  

linq存儲過程之在business中間層直接調用:

  1. public class StatTaskControl : ControlBase  
  2. {  
  3. public IEnumerable GetStatInfo
  4. (TaskType type, DateTime startDate, DateTime endDate)  
  5. {  
  6. IMultipleResults info = 
  7. Context.MeterTaskStat((int)type, startDate, endDate);  
  8. IEnumerable data = info.GetResult();  
  9. return data;  
  10. }  

linq存儲過程之ui層獲取:

  1. protected void StatButton_Click(object sender, EventArgs e)  
  2. {  
  3. DateTime startDate = DateTime.Parse(StartDate.Text);  
  4. DateTime endDate = DateTime.Parse(EndDate.Text);  
  5. TaskType type = TaskType.Remove;  
  6. IEnumerable info =
  7.  _control.GetStatInfo(type, startDate, endDate);  
  8. List data = info.ToList();  
  9. RemoveGridView.DataSource = data;  
  10. RemoveGridView.DataBind();  
  11. }  

整個linq存儲過程大概就是這么幾步.也不是太困難!

【編輯推薦】

  1. 詳談Linq查詢結果分析的方法
  2. 簡簡單單學習Linq查詢語法
  3. 詳細闡述Linq插入數據的操作方法
  4. 淺析Linq插入數據的實現方法
  5. 簡單解決Linq多條件組合問題
責任編輯:阡陌 來源: 博客園
相關推薦

2009-09-09 10:54:52

Linq存儲過程返回

2010-01-08 13:23:38

ibmdwInfoSphere

2011-08-29 15:52:19

SQL ServerMybatis存儲過程

2009-09-15 15:45:00

Linq聯合查詢

2009-09-17 09:45:36

LINQ查詢語句

2011-08-18 17:32:40

Oracle存儲過程利用游標返回結果集

2010-05-07 13:03:01

Oracle通過存儲過

2009-09-09 10:58:58

Linq結果集形狀

2009-09-09 11:14:04

Linq多個結果集

2009-09-17 10:40:23

linq存儲過程

2009-09-17 11:32:52

LINQ調用存儲過程

2009-09-17 10:04:32

LINQ存儲過程

2011-08-25 09:31:43

JDBC調用Oracl

2011-08-23 10:14:09

JDBC更新計數行調用存儲過程SQL Server

2009-09-15 11:08:01

LinQ調用存儲過程

2009-09-15 11:34:47

Linq多條件查詢

2009-10-22 13:02:47

SQL CLR存儲過程

2009-09-17 15:22:38

LINQ to SQL

2009-09-17 15:51:39

Linq to sql

2009-09-13 19:24:33

LINQ存儲過程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品区一区二区三区 | 国产精品视频中文字幕 | 久久国产精品免费一区二区三区 | 国产精品免费一区二区三区 | www.久| 美女黄18岁以下禁止观看 | 99热热精品 | 亚洲精品www| 欧美精品在线一区 | 日韩一二三区 | 欧美色成人 | 男女免费视频网站 | 秋霞电影院午夜伦 | 午夜精品一区二区三区免费视频 | 中文字幕av网址 | av网站免费观看 | 国产在线一区二区 | 成人免费久久 | 久久一本| 亚洲精品成人 | 欧洲高清转码区一二区 | 日韩av高清在线 | 欧美8一10sex性hd | 精品久久久久久久久久久下田 | 国产视频福利在线观看 | 欧美精品久久久久 | 成人亚洲在线 | 亚洲视频在线看 | 精品国产一区二区国模嫣然 | 国产午夜精品理论片a大结局 | 成人日韩 | 成年人在线| 一级做a爰片久久毛片 | 日韩成人精品一区 | 天天久久 | 琪琪午夜伦伦电影福利片 | 免费观看国产视频在线 | 97视频精品 | 欧美成人免费在线 | 毛片1| 国产精品99久久久久 |