文档章节

EntityFramework 6 分页模式

taadis
 taadis
发布于 2017/12/27 21:40
字数 466
阅读 286
收藏 0

在我的另一篇博客中提到了EntityFrameworkCore 分页问题, 中提到了EntityFrameworkCore在针对不同版本SQL Server数据库时如何指定分页模式,那么如何在EntityFramework 6中指定分页模式呢?

场景重现

在一个项目VS2010开发的项目中,我引用了EntityFramework 6,但数据库使用的是SQL Server 2012.

使用T4模版生成的数据库上下文,使用EntityFramework 6.Take().Skip()方法生成分页使用的是SQL Server 2008rows_number()方式.

出现了翻页操作时,页数越靠后,查询速度越慢的情况,4W条多表关联视图数据,第一页查询只用0.5毫秒,直接最后一页查询用了30多秒...

解决办法

然后就想如何在EntityFramework 6中启用SQL Server 2012中的新分页方式offset & fetch呢?

后来发现可以通过编辑器打开.edmx文件(是xml内容),修改ProviderManifestToken="2008"ProviderManifestToken="2012",然后编译运行,查看现在EntityFramework 6分页语句生成的sql就可以看到使用的是offset & fetch了,同时上面的问题已解决了,每页查询速度基本稳定在秒内.

同理是不是可以通过修改该属性值来使用SQL Server 2005的分页模式?

不过在VS2010中出现如下错误信息,不影响功能,但看着烦,暂时不知道如何消除?

我猜是不是受VS2010T4模版影响,下次换个高版本的VS或模版看看?

  • 后来使用VS2017生成数据库实体,发现ProviderManifestToken默认就为2012
  • 重新使用VS2010生成数据库实体,发现ProviderManifestToken默认又是2008

参考文档

© 著作权归作者所有

taadis

taadis

粉丝 7
博文 396
码字总数 63426
作品 0
温州
其他
私信 提问
请确保在应用程序配置文件的“entityFramework”节中注册了该提供程序

异常原因 在项目中,我把数据库模型成单独分在一个 Models 类库中, 并添加了 EntityFramework. 但是在要发布的 Web 类库中, 并没有添加 EntityFramework 相关的依赖和配置. 网站发布到IIS后,...

taadis
0005/02/12
233
0
MVC4建立DBContext的EF6数据

MVC4建立DBContext的EF6数据时 1.需要using System.Data.Entity;命名空间 2.此命名空间需要安装EntityFromwork.dll,此dll可以在项目——》管理NuGet程序包里联机搜索EntityFromwork并安装即...

随缘不变
2018/06/27
0
0
Asp.Net MVC5 响应式论坛

响应式论坛开发与源码提供。 主要开发技术为:EntityFramework、MySql、Asp.net Mvc5.2.3、Unity IOC MySql调试通过,默认支持所有支持EntityFramework的关系型数据库 示例:http://f.yjx.in...

江上烟波
2016/10/17
185
0
别跟我谈EF抵抗并发,敢问你到底会不会用EntityFramework

前言 一直以来写的博文都是比较温婉型的博文,今天这篇博文算是一篇批判性博文,有问题欢迎探讨,如标题,你到底会不会用EntityFramework啊。 你到底会不会用EntityFramework啊   面试过三...

dotNET跨平台
2018/05/07
0
0
EntityFramework 的一个问题

使用EntityFramework的Code first时发现这么一个问题: 下文中涉及到的数据表名字为Roles,这张表中只有两个字段一个自增长的int类型ID,另外一个是NVARCHAR类型的RoleName 新添一条Roles记录...

长平狐
2012/06/08
48
0

没有更多内容

加载失败,请刷新页面

加载更多

获取map()以在Python 3.x中返回列表

我正在尝试将列表映射为十六进制,然后在其他地方使用该列表。 在python 2.6中,这很简单: 答: Python 2.6: >>> map(chr, [66, 53, 0, 94])['B', '5', '\x00', '^'] 但是,在Python 3.......

技术盛宴
6分钟前
4
0
基于TI达芬奇系列TMS320DM8148浮点DSP C674xBOOT SET启动选择开关、Micro SD接口

说明 由广州创龙设计的SOM-TL8148和SOM-TL8127核心板是Pin To Pin兼容,两款核心板公用同一块底板。DM8148与DM8127相比,DM8148有SATA接口,DM8127没有SATA接口;而DM8127有CSI2接口,DM814...

Tronlong创龙
9分钟前
4
0
产品经理如何有效进行需求管理?

需求是整个软件项目当中最重要一项输入。软件开发和传统生产行业最大的区别在于,需求总是模糊的、主观的和随时变化的。相对于电子产品、汽车等制造行业有形的硬件需求,软件开发的需求的描述...

Worktile
22分钟前
2
0
Python 判断变量是否是 None 的三种写法

代码中经常会有变量是否为None的判断,有三种主要的写法: 第一种是if x is None; 第二种是 if not x:; 第三种是if not x is None(这句这样理解更清晰if not (x is None)) 。 如果你觉得...

每天学Python
25分钟前
2
0
springboot初探——启动流程

前面已经介绍一下springboot,本篇开始介绍springboot在启动过程中做了什么,凭什么那么少的代码就能完成一个web项目。 其他的我们可以先不管,先来看一眼springboot的main方法 @SpringBootA...

计算机狼
44分钟前
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部