netcore3.1框架版本无法兼容数据库EFCore2.2版本,有什么好的办法?

2020-07-15 15:39发布

问题:

有这种需求的背景:

如果是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