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)

posted @ 2024-10-15 11:31  海宏软件  阅读(24)  评论(0编辑  收藏  举报