1、EFCORE 5.0 对SQL Server 2008 R2 兼容问题
据说从某版本开始EF对SQL Server 2008 R2的兼容性不好了,具体应该是想强制让大家买最新的SQL SERVER 2012及以上版本,功能受限,简单的查询使用是没问题的,当开始制作分页查询的时候问题来了。
代码
var list = db.sys_user.Take(limit).Skip((page-1) * limit).ToList();
EF会报错【System.Data.SqlClient.SqlException: ‘OFFSET’ 附近有语法错误】,在老版本中使用通过配置以下代码解决,但是在EFCORE5中,API已经被移除。
services.AddDbContext(options => options.UseSqlServer(connection,b=>b.UseRowNumberForPaging()));
经过查阅发现了以下方案,使用nuget 搜索安装 【EfCore.SqlServer2008Query】包,然后添加配置代码。目前功能使用正常,还未发现问题。
optionsBuilder.ReplaceService<IQueryTranslationPostprocessorFactory, SqlServer2008QueryTranslationPostprocessorFactory>();