Verwendung von SQL Server OFFSET & FETCH FIRST mit Entity Framework 5?

9

Ist OFFSET & amp; FETCH FIRST keywords, die in SQL Server 2012 eingeführt werden, werden in EntityFramework 5 und Linq to SQL?

unterstützt

Es zeigt eine 50% ige Leistungsverbesserung bei Verwendung von SELECT * FROM tables ORDER BY stime DESC OFFSET 0 ROWS FETCH FIRST 10 ROWS ONLY anstelle von var a= db.table.Skip(0).Take(10);

    
Libin TK 20.08.2013, 09:20
quelle

1 Antwort

2

Kurze Antwort ist Nein, es wird nicht in EF5 unterstützt, aber Version 6.1.2 von Entity Framework wurde gerade veröffentlicht, als im ADO.NET Blog notiert . Eine der neuen Funktionen in 6.1.2 ist die Unterstützung der OFFSET..FETCH SQL Server 2012+ Paging-Syntax.

Wenn Sie ein ORM-ähnliches Entity Framework kaufen, müssen Sie Ihre Abfragegenerierung (aus absolut gültigen Gründen) nutzen. Ob EF die ältere CTE-Style-Abfrage mit Row_Number () verwendet oder ob der neuere Fetch / Offset ein Implementierungsdetail ist. Microsoft könnte den EF-Code jederzeit aktualisieren und die Abfragegenerierung so ändern, dass sie das eine oder das andere verwendet. Referenz

  

Wenn Sie die Abfragegenerierung steuern möchten, haben Sie entweder:

     

Verwenden Sie die EF-Fähigkeit "gespeicherte Prozedurzuordnung" Verwenden Sie gespeicherte Prozeduren   direkt mit EF (etwas, was ich ziemlich oft mache) schreibe das ADO / SQL   Sie selbst, oder verwenden Sie eine begrenzte Mikro-Orm wie massiv / PetaPoco So   ist es wichtig?

     

Nun, für einen Entwickler, der Abfragen schreibt, wird die neue Syntax a   willkommene Erleichterung. Auf der anderen Seite scheint es nicht, dass es ein   echter Leistungsunterschied zwischen der alten CTE-Methode und der neuen   Syntax. Also aus der Sicht von EF - nicht wirklich. Wir haben eine erhebliche   Overhead mit EF, die Methode des Paging wird wahrscheinlich nicht Ihre Pause sein   Punkt. Refrance

    
Hussein Khalil 20.05.2015 05:56
quelle