实体框架和SQL Server 2012分页

时间:2012-04-20 11:20:48

标签: 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吗?

2 个答案:

答案 0 :(得分:11)

正如@Ladislav所说,EF 5不支持OFFSET&取。话虽如此,我想补充一点观点。我认为这不重要。

当您购买像Entity Framework这样的ORM时,您需要获取查询生成(出于完全正当的理由)。 EF是否使用{较早的'CTE样式查询与Row_Number()或较新的Fetch / Offset是一个实现细节。 Microsoft可以随时更新EF代码,并将查询生成更改为使用其中一个。

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

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

那重要吗?

好吧,对于编写查询的开发人员来说,新语法将会受到欢迎。另一方面,doesn't appear有一个真正的performance difference between旧CTE方法和新语法。所以从EF的角度来看 - 不是真的。我们使用EF招致significant overhead,寻呼方法可能不是你的断点。

答案 1 :(得分:9)

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