2013-08-20 89 views
9

OFFSET & FETCH FIRST在SQL Server 2012中引入的關鍵字在EntityFramework 5和Linq to SQL中受支持?如何在實體框架5中使用SQL Server OFFSET&FETCH FIRST?

它顯示了使用時SELECT * FROM tables ORDER BY stime DESC OFFSET 0 ROWS FETCH FIRST 10 ROWS ONLY代替var a= db.table.Skip(0).Take(10);

+3

不支持EntityFramework(包括6)。 – user2674389

+4

您可以在這裏爲該功能投票:https://entityframework.codeplex.com/workitem/961 – ErikEJ

+2

其實,正如我所看到的功能已經提交給EF源代碼管理https://entityframework.codeplex.com/SourceControl/network/叉子/ BrandonDahler/EntityFramework /貢獻/ 6237 –

回答

2

簡短的回答是不,它不是在EF5支持,但實體框架的6.1.2版本剛剛發佈,爲noted on the ADO.NET blog 50%的性能提升。 6.1.2中的新功能之一是支持OFFSET..FETCH SQL Server 2012+分頁語法。

當您購買到像實體框架這樣的ORM時,您將爲您的查詢生成外購(出於完全正確的原因)。 EF是否使用具有Row_Number()的較舊的CTE樣式查詢或較新的Fetch/Offset是實現細節。微軟可以隨時更新EF代碼,並將查詢代更改爲使用其中一種。 Reference

如果你想通過查詢生成器,您可以:

使用EF的「存儲過程映射的能力使用存儲過程 直接與EF(這是我經常做的)寫的ADO/SQL 你自己,還是使用更有限的micro-orm像mass/PetaPoco那麼 它有什麼關係嗎?

那麼,對於編寫查詢的開發人員來說,新的語法將成爲一個受歡迎的解決方案 。另一方面,在舊的CTE方法和新的 語法之間似乎並不存在真實的性能差異。所以從EF的角度來看 - 並非如此。我們發生了一個顯着的使用EF的 開銷,分頁的方法可能不會是你的突破 點。 Refrance

相關問題