日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
教你如何實(shí)現(xiàn)linq存儲過程返回多條結(jié)果集

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

成都創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營銷推廣、網(wǎng)站重做改版、峽江網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5頁面制作、商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價格優(yōu)惠性價比高,為峽江等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

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

linq存儲過程更改前:

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

linq存儲過程更改后:

 
 
 
  1. [Function(Name="dbo.MeterTaskStat")]
  2. [ResultType(typeof(TaskStatData))]
  3. public IMultipleResults MeterTaskStat
  4. ([Parameter(Name = "MeterTaskType", DbType = "Int")]
  5. System.Nullable 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));
  16. }

注意到 多一條: [ResultType(typeof(TaskStatData))] 的記錄吧,簡單介紹一下,必須得為linq存儲過程的結(jié)果返回一個實(shí)體類型,而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: 根據(jù)口徑統(tǒng)計(jì)某段時間內(nèi)水表復(fù)裝任務(wù)信息
  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

linq存儲過程之在business中間層直接調(diào)用:

 
 
 
  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. }
  11. }

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存儲過程大概就是這么幾步.也不是太困難!


網(wǎng)站題目:教你如何實(shí)現(xiàn)linq存儲過程返回多條結(jié)果集
URL分享:http://m.5511xx.com/article/cdpddic.html