ASP.NET MVC + EF 利用存储过程读取大数据,1亿数据测

发布时间:2017-09-13 11:49:42
ASP.NET MVC + EF 利用存储过程读取大数据,1亿数据测试很OK 看到本文的标题,相信你会忍不住进来看看!

没错,本文要讲的就是这个重量级的东西,这个不仅仅支持单表查询,更能支持连接查询,

加入一个表10W数据,另一个表也是10万数据,当你用linq建立一个连接查询然后利用take,skip读取第N页数据的时候,专题系统,

你的程序就挂了,因为,你很可能读取需要几十秒甚至几分钟以上。

下面来讲解一下,ASP.NET MVC + EF 利用存储过程读取大数据的详细过程。

1.首先,我们创建一个实体类PageinationInfo,主要用于分页,如下

复制代码

1 public class PageinationInfo

2 {

3 /// <summary>

4 /// 要显示的表或多个表的连接

5 /// </summary>

6 public string strTable { get; set; }

7

8 /// <summary>

9 /// 要查询的字段

10 /// </summary>

11 public string strField { get; set; }

12

13 /// <summary>

14 /// 每页多少条记录

15 /// </summary>

16 public int pageSize { get; set; }

17

18 /// <summary>

19 /// 当前页

20 /// </summary>

21 public int pageIndex { get; set; }

22

23 /// <summary>

24 /// 查询条件,不需where

25 /// </summary>

26 public string strWhere { get; set; }

27

28 /// <summary>

29 /// 用于排序的主键

30 /// </summary>

31 public string strSortKey { get; set; }

32

33 /// <summary>

34 /// 用于排序,如:id desc (多个id desc,dt asc)

35 /// </summary>

36 public string strSortField { get; set; }

37

38 /// <summary>

39 /// 排序,0-顺序,1-倒序

40 /// </summary>

41 public bool strOrderBy { get; set; }

42

43 /// <summary>

44 /// 总记录数

45 /// </summary>

46 public int RecordCount { get; set; }

47

48 /// <summary>

49 /// 总页数

50 /// </summary>

51 public int PageCount { get; set; }

52

53 /// <summary>

54 /// 查询耗时,毫秒为单位

55 /// </summary>

56 public int UsedTime { get; set; }

57

58 }

复制代码

2.然后我们再DAL层新建一个类 PageinationInfoService 主要用于实现分页读取数据,如下:

复制代码

1 public class PageinationInfoService

2 {

3 /// <summary>

4 /// 获取分页列表

5 /// </summary>

6 /// <param name="pageinationInfo"></param>

7 /// <returns></returns>

8 public IList<Entity> GetPageinationInfoList<Entity>(PageinationInfo pageinationInfo) where Entity : class

9 {

10 dynamic result = null;

11 using (SnsLearningLogManagerDB db = new SnsLearningLogManagerDB())

12 {

13 #region SqlParameter参数

14 SqlParameter[] paras = new SqlParameter[10];

15 paras[0] = new SqlParameter("strTable", DbType.String);

16 paras[0].Value = pageinationInfo.strTable;

17

18 paras[1] = new SqlParameter("strField", DbType.String);

19 paras[1].Value = pageinationInfo.strField;

20

21 paras[2] = new SqlParameter("pageSize", DbType.Int16);

22 paras[2].Value = pageinationInfo.pageSize;

23

24 paras[3] = new SqlParameter("pageIndex", DbType.Int16);

25 paras[3].Value = pageinationInfo.pageIndex;

26

27 paras[4] = new SqlParameter("strWhere", DbType.String);

28 paras[4].Value = pageinationInfo.strWhere;

29

30 paras[5] = new SqlParameter("strSortKey", DbType.String);

31 paras[5].Value = pageinationInfo.strSortKey;

32

33 paras[6] = new SqlParameter("strSortField", DbType.String);

34 paras[6].Value = pageinationInfo.strSortField;

35

36 paras[7] = new SqlParameter("strOrderBy", DbType.Boolean);

37 paras[7].Value = pageinationInfo.strOrderBy;

38

39 paras[8] = new SqlParameter("RecordCount", DbType.Int16);

40 paras[8].Value = pageinationInfo.RecordCount;

41 paras[8].Direction = ParameterDirection.Output;

42

43 paras[9] = new SqlParameter("UsedTime", DbType.Int16);

44 paras[9].Value = pageinationInfo.UsedTime;

45 paras[9].Direction = ParameterDirection.Output;

46 #endregion

47

48 try

49 {

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:武汉网站设计公司 https://www.feimao666.com