ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

dotnetcore EF 分页

2022-01-31 19:01:43  阅读:165  来源: 互联网

标签:分页 pageSize students EF ctx pageNo int dotnetcore student


保存100个students,有意思的是虽然看似所有的students应该有序插入,但是db显示students的顺序是乱的。

        // 保存100个students,有意思的是虽然看似所有的students应该有序插入,但是db显示students的顺序是乱的。
        private static async Task SaveStudents(MyDbContext ctx)
        {
            for (int i = 0; i < 100; i++)
            {
                Student student = new Student()
                {
                    Name = $"student_{i}",
                };

                ctx.Students.Add(student);
            }

            await ctx.SaveChangesAsync();
        }

使用skip/take实现分页功能

        // 使用skip/take实现分页功能。
        private static Task GetStudentsPerPage(MyDbContext ctx, int pageSize)
        {
            long count = ctx.Students.LongCount();
            int pageCount = (int)Math.Ceiling(count * 1.0 / pageSize);

            for (int pageNo = 0; pageNo < pageCount; pageNo++)
            {
                Console.WriteLine($"Page #{pageNo}, size {pageSize}");
                foreach (Student s in ctx.Students.Skip(pageNo * pageSize).Take(pageSize))
                {
                    Console.WriteLine("  " + s.Name);
                }
            }

            return Task.CompletedTask;
        }

longcount语句被翻译成了COUNT_BIG

info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Executed DbCommand (19ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
      SELECT COUNT_BIG(*)
      FROM [student] AS [s]

skip/take被翻译成offset和fetch。

info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Executed DbCommand (18ms) [Parameters=[@__p_0='?' (DbType = Int32), @__p_1='?' (DbType = Int32)], CommandType='Text', CommandTimeout='30']
      SELECT [s].[Id], [s].[Name]
      FROM [student] AS [s]
      ORDER BY (SELECT 1)
      OFFSET @__p_0 ROWS FETCH NEXT @__p_1 ROWS ONLY
  ??
  ??
  ??
  student_0
  student_72
  student_71
  student_70
  student_69
  student_68
  student_67
  student_66
  student_65

标签:分页,pageSize,students,EF,ctx,pageNo,int,dotnetcore,student
来源: https://www.cnblogs.com/mryux/p/15858490.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有