ef8解决sql2008R2不支持fetch命令问题:optionsBuilder.UseSqlServer(sConn, options => options.UseRowNumberForPaging())
netcore er8.
sql2012支持fetch命令,sql2008r2不支持fetch命令,调用ef的skip(100).take(10)时,会报错:
ERROR [.NET TP Worker] (D:\Design\CSharp\海宏发票查重报销管理\iPublic\公共\BaseApiController.cs:114) - 资料维护.Pages.CommBase.FaPiaoTypeApiController.query: :'OFFSET' 附近有语法错误。 在 FETCH 语句中选项 NEXT 的用法无效。 Microsoft.Data.SqlClient.SqlException (0x80131904): 'OFFSET' 附近有语法错误。 在 FETCH 语句中选项 NEXT 的用法无效。
ef3之后默认是sql2012了,不支持sql2008了,ef8解决办法:
using EntityFrameworkCore.UseRowNumberForPaging; protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer(sConn, options => options.UseRowNumberForPaging()); }
参考:
EF7 (RC1) - Cannot Skip() and Take() in SQL Server 2008 · Issue #4616 · dotnet/efcore (github.com)