当数据库使用 SQL Server 2008 R2 时,Entity Framework Core 会报这样的错误:
System.Data.SqlClient.SqlException: Incorrect syntax near 'OFFSET'. Invalid usage of the option NEXT in the FETCH statement. at System.Data.SqlClient.SqlCommand.<>c.<ExecuteDbDataReaderAsync>b__107_0(Task`1 result)
用 UseRowNumberForPaging() 解决了问题
services.AddDbContext<MyDbContext>(options =>
options.UseSqlServer(connectionString, o => o.UseRowNumberForPaging()));
这个语法好像是2012才开始支持的。
offset 10 rows fetch next 10 rows only
确实是08不支持,12才开始支持的语法。
从EF Core 3.1开始UseRowNumberForPaging 已删除