文档章节

EntityFrameworkCore 分页问题

taadis
 taadis
发布于 2017/05/02 12:27
字数 214
阅读 117
收藏 0

场景重现

使用 EntityFrameworkCore 连接 SQL Server 2008 执行.Skip().Take()分页查询时出现如下异常:

SqlException: 'OFFSET' 附近有语法错误。
在 FETCH 语句中选项 NEXT 的用法无效。

异常原因

SQL Server 中有几种实现分页的方式,但是有版本限制.

  • top not in 方式 - SQL Server 2005 新增的
  • ROW_NUMBER() OVER()方式 - SQL Server 2008 新增的
  • offset fetch next 方式 - SQL Server 2012 新增的

而在EntityFramworkCore中默认使用的是最新的offset fetch方式,
而我使用的 SQL Server 2008 不支持该关键字, 自然就异常.

解决办法

这是 EntityFrameworkCore 中的原话.

Use a ROW_NUMBER() in queries instead of OFFSET/FETCH. This method is backwards-compatible to SQL Server 2005. public virtual void UseRowNumberForPaging();

于是乎,我们指定下 EntityFramworkCore 中使用的分页模式即可.

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    optionsBuilder.UserSqlServer("yourConnectionString", options => {
        options.UseRowNumberForPaging();
    });
}

© 著作权归作者所有

taadis

taadis

粉丝 6
博文 548
码字总数 90461
作品 0
温州
其他
私信 提问
EntityFramework 6 分页模式

在我的另一篇博客中提到了EntityFrameworkCore 分页问题,中提到了在针对不同版本SQL Server数据库时如何指定分页模式,那么如何在中指定分页模式呢? 场景重现 在一个项目开发的项目中,我引用了...

taadis
2017/12/27
180
0
entityframework core database first update model

本命令针对存在的model从数据库进行更新,在程序包控制台输入以下命令: Scaffold-DbContext "数据库字符串" Microsoft.EntityFrameworkCore.SqlServer -OutputDir 输出目录 -Context 现有d...

VOLVO之悦
2017/09/26
0
0
.net core 1.1下的EntityFramework Code First

新建asp.net core项目,然后把.net core引用的类库升级到1.1,这时,需要手动在project.json下添加一个runtimes节点,如下: "runtimes": { "win10-x64": {} } 同时在Nuget中添加下面三个类库......

桂素伟
2017/01/27
0
0
DotNetCore跨平台~EFCore连接Mysql的方式

在.net frameworks的ef里连接mysql我们已经测试通过了,而在dotnet core里的efCore上去连接mysql我们需要测试一下,并且在测试过程中出现了一些问题,当然最后也是解决了,下面总结一下,分享...

mcy247
2017/12/04
0
0
EntityFrameworkCore 常用包

记录下常用的 EntityFrameworkCore 包 Nuget 包管理技巧 我们可以直接添加以下要使用的包,会自动安装并引用需要的依赖包,而不用手动一个个添加. Microsoft.EntityFrameworkCore.Tools 添加该...

taadis
2017/06/07
63
0

没有更多内容

加载失败,请刷新页面

加载更多

UAVStack功能上新:新增JVM监控分析工具

UAVStack推出的JVM监控分析工具提供基于页面的展现方式,以图形化的方式展示采集到的监控数据;同时提供JVM基本参数获取、内存dump、线程分析、内存分配采样和热点方法分析等功能。 引言 作为...

宜信技术学院
12分钟前
3
0
MySQL的5种时间类型的比较

日期时间类型 占用空间 日期格式 最小值 最大值 零值表示 DATETIME 8 bytes YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 9999-12-31 23:59:59 0000-00-00 00:00:00 TIMESTAMP 4 bytes YYYY-MM......

物种起源-达尔文
19分钟前
4
0
云服务OpenAPI的7大挑战,架构师如何应对?

阿里妹导读:API 是模块或者子系统之间交互的接口定义。好的系统架构离不开好的 API 设计,而一个设计不够完善的 API 则注定会导致系统的后续发展和维护非常困难。比较好的API设计样板可以参...

阿里云官方博客
23分钟前
1
0
Rancher + VMware PKS实现全球数百站点的边缘K8S集群管理

Sovereign Systems是一家成立于2007年的技术咨询公司,帮助客户将传统数据中心技术和应用程序转换为更高效的、基于云的技术平台,以更好地应对业务挑战。曾连续3年提名CRN,并且在2012年到2...

RancherLabs
27分钟前
4
0
6、根据坐标,判断该坐标是否在地图区域范围内

最近在写配送区域相关的代码,具体需求如下: 根据腾讯地图划分配送区域,总站下边设多个配送分站,然后将订单中的收货地址将其分配给不同的配送分站。 1、地图区域划分(腾讯地图) 1.1、H...

有一个小阿飞
29分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部