abd*_*dul 6 c# mysql entity-framework-core
我试图Products从MySQL数据库分页,但如果我使用Skip()或Take()它返回一个空的Json数组作为我的web api响应像这样
[]
Run Code Online (Sandbox Code Playgroud)
但是扩展方法,如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);
}
Run Code Online (Sandbox Code Playgroud)
我甚至.Skip(1).Take(2)没有运气地硬编码查询.有人遇到过这个问题或者知道解决方法吗?
原来这MySql.Data是Oracle提供的EF连接器中的一个错误,错误详细信息发布在这里.
替代方案:
我改叫另一个连接器柚,现在Skip和Take工作完全正常.您可以搜索nuget Pomelo.EntityFrameworkCore.MySql并为您的项目安装适当的版本.
要使用,只需更改.UseMySQL为.UseMySql配置时DbContext,因为oracle连接器使用SQL和pomelo Sql只使用套管不同.
services.AddDbContext<ApplicationDbContext>(options =>
options.UseMySql(Configuration.GetConnectionString("DefaultConnection")));
Run Code Online (Sandbox Code Playgroud)