实体框架和SQL Server 2012分页

Jud*_*udo 9 entity-framework sql-server-2012 entity-framework-5

SQL Server 2012引入了一种更有效的使用FETCH和OFFSET进行分页的机制,这可能会对使用大量分页的应用程序的性能产生很大影响.Entity Framework 5是否支持此功能?因此,如果我使用EF来翻页使用Take + Skip,如果EF针对的是SQL Server 2012,那么LINQ查询会转换为新的2012 TSQL吗?

EBa*_*arr 11

正如@Ladislav所说,EF 5不支持OFFSET和FETCH.话虽如此,我想补充一点观点.我认为这不应该太重要.

当你购买像Entity Framework这样的ORM时,你就是在寻找你的查询代码(出于完全正当的理由).EF是使用"旧" CTE样式查询Row_Number()还是更新Fetch/ Offset是实现细节.Microsoft可以随时更新EF代码,并将查询生成更改为使用其中一个.

如果要控制查询生成,可以:

  • 使用EF的"存储过程映射"功能
  • 直接使用EF存储过程(我经常这样做)
  • 自己编写ADO/SQL,或者
  • 使用更有限的微型orm像大型/ PetaPoco

那重要吗?

好吧,对于编写查询的开发人员来说,新语法将会受到欢迎.另一方面,旧的CTE方法和新语法之间似乎没有真正的性能差异.所以从EF的角度来看 - 不是真的.使用EF 会产生很大的开销,寻呼方法可能不会是你的突破点.


Lad*_*nka 9

EF 5不支持此功能 - 实际上我认为EF中没有SQL Serve 2012功能.您可以在Data UserVoice上为此功能投票,以便在ADO.NET团队产品待办事项中将其移动.