问题:
有这种需求的背景:
如果是efcore3.0后的版本,数据库分页查询语法是用的新语法,老的数据库版本则不支持。
测试了新的分页写法"OFFSET 0 ROWS FETCH NEXT @__p_0 ROWS ONLY",已不用row_number来实现。但是新的写法无法满足老版本数据库(比如sql2008)
刚测试了一下,框架版本3.1,但是efcore版本用2.2,编译没有问题,但是加载的时候是会提示错误的(测试的是Pomelo.EntityFrameworkCore.MySql)。
具体错误如下:
System.TypeLoadException:“Method 'get_Info' in type 'Pomelo.EntityFrameworkCore.MySql.Infrastructure.Internal.MySqlOptionsExtension' from assembly 'Pomelo.EntityFrameworkCore.MySql, Version=2.2.6.0, Culture=neutral, PublicKeyToken=null' does not have an implementation.”
---------------------------------------------------
是否只能降框架版本和efcore版本,或者升级数据库版本来解决呢?
回答1:
参考 Query: Bring back support for UseRowNumberForPaging
回答2:
你得确定一下到底用SQL SERVER 还是 MYSQL,哪有用MYSQL测试SQL SERVER的。
回答3:
配置的地方有个方法名叫 UseRownumberPaging() ,兼容08以下数据库的
回答4:
楼上的链接里有解决方法
https://github.com/dotnet/efcore/issues/16400#issuecomment-573325540
打开上面链接, 代码点开 详细信息
已经用过一段时间了, 暂时没有发现bug
回答5:
我遇到过这个bug,后面改成mysql了,2.X版本无解
https://www.cnblogs.com/jhli/p/9962372.html