Lib*_* TK 9 c# entity-framework linq-to-sql sql-server-2012
是否支持SQL Server 2012中引入的OFFSET&FETCH FIRST关键字EntityFramework 5和Linq to SQL?
当使用SELECT * FROM tables ORDER BY stime DESC OFFSET 0 ROWS FETCH FIRST 10 ROWS ONLY而不是使用时,它显示出50%的性能提升var a= db.table.Skip(0).Take(10);
简而言之,答案是否定的,EF5 不支持它,但实体框架 6.1.2 版本刚刚发布,如ADO.NET 博客中所述。6.1.2 中的新功能之一是支持 OFFSET..FETCH SQL Server 2012+ 分页语法。
当您购买像实体框架这样的 ORM 时,您就将查询生成外包了(出于完全正当的理由)。EF 是否使用带有 Row_Number() 的“较旧”CTE 样式查询或较新的 Fetch / Offset 是一个实现细节。Microsoft 可以随时更新 EF 代码并更改查询生成以使用其中之一。参考
如果您想控制查询生成,您可以:
使用 EF 的“存储过程映射”功能 直接将存储过程与 EF 一起使用(我经常这样做)自己编写 ADO/SQL,或者使用更有限的微程序,如 Massive/PetaPoco 那么这有什么关系吗?
好吧,对于编写查询的开发人员来说,新语法将是一种受欢迎的缓解。另一方面,旧的 CTE 方法和新语法之间似乎并没有真正的性能差异。所以从 EF 的角度来看——事实并非如此。我们使用 EF 会产生大量开销,分页方法可能不会成为您的断点。 雷弗朗斯
| 归档时间: |
|
| 查看次数: |
3507 次 |
| 最近记录: |