我试图Products
从MySQL数据库分页,但如果我使用Skip()
或Take()
它返回一个空的Json数组作为我的web api响应像这样
[]
但是扩展方法,如FirstOrDefault()
,Where()
...工作正常.这是代码片段:
public IActionResult GetPage(int page, int pageSize = 2) { int productCount = _context.Products.Count(); // 5 float totalPages = (float)Math.Ceiling((float)productCount / pageSize); //2.5 -- round to 3 if (page < 1 || page > totalPages) return NotFound(); var products = _context.Products.Skip((page - 1) * pageSize).Take(pageSize); //skip & take err mysql ef return Ok(products); }
我甚至.Skip(1).Take(2)
没有运气地硬编码查询.有人遇到过这个问题或者知道解决方法吗?
原来这MySql.Data
是Oracle提供的EF连接器中的一个错误,错误详细信息发布在这里.
替代方案:
我改叫另一个连接器柚,现在Skip
和Take
工作完全正常.您可以搜索nuget Pomelo.EntityFrameworkCore.MySql
并为您的项目安装适当的版本.
要使用,只需更改.UseMySQL
为.UseMySql
配置时DbContext
,因为oracle连接器使用SQL
和pomelo Sql
只使用套管不同.
services.AddDbContext(options => options.UseMySql(Configuration.GetConnectionString("DefaultConnection")));