@ -57,4 +57,17 @@ public class AppDbContext : DbContext
public DbSet<Account> Accounts { get; set; }
}
```
## SQL Server 2008 分页错误
原因:EF Core 放弃了对SQL2008的支持,特别是分页查询会报错:"OFFSET 附近有语法错误",原因是OFFSET的分页语法,从SQL Server 2012开始支持。
解决:使用第三方库 "EntityFrameworkCore.UseRowNumberForPaging", 在SQL 2008中改用 Row_Number() 分页. 如下方式配置项目使用:加一个 .UseRowNumberForPaging()
```csharp
//原使用方法
xx.UseSqlServer(ConnectString, opt => {})
//修改后的使用方法
.UseSqlServer(ConnectString, opt => { opt.UseRowNumberForPaging(); })
@ -3,6 +3,8 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using EntityFrameworkCore.UseRowNumberForPaging;
namespace EFCore7Study.DataService
{
/// <summary>
@ -36,7 +38,7 @@ namespace EFCore7Study.DataService
optionsBuilder
.UseSqlServer(ConnectString)
.EnableSensitiveDataLogging();
@ -7,6 +7,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="EntityFrameworkCore.UseRowNumberForPaging" Version="0.4.0" />
<PackageReference Include="Microsoft.DependencyValidation.Analyzers" Version="0.11.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.5" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.5" />