标签:分页 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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。