Както каза @Ladislav, EF 5 не поддържа OFFSET &FETCH. С това казано, исках да добавя малко перспектива. Не мисля, че трябва да има голямо значение.
Когато се включите в ORM като Entity Framework, вие сте извън източника на генериране на вашата заявка (поради напълно основателни причини). Дали EF използва „по-стария“ CTE
стилова заявка с Row_Number()
или по-новия Fetch
/ Offset
е детайл от изпълнението. Microsoft може да актуализира EF кода по всяко време и да промени генерирането на заявка, за да използва едното или другото.
Ако искате контрол върху генерирането на заявка, вие:
- Използвайте възможността на EF за „съпоставяне на съхранена процедура“
- Използвайте съхранени процедури директно с EF (нещо, което правя доста често)
- напишете ADO/SQL сами или
- използвайте по-ограничен микроорм като massive/PetaPoco
Значи има ли значение?
Е, за програмист, който пише заявки, новият синтаксис ще бъде добре дошло облекчение. От друга страна, той не се показва че има реална разлика в производителността между стария CTE метод и новия синтаксис. Така че от гледна точка на EF - всъщност не. Поемаме значителни разходи използвайки EF, методът на страниране вероятно няма да бъде вашата точка на прекъсване.