Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Entity Framework und SQL Server 2012-Paging

Wie @Ladislav sagte, unterstützt EF 5 OFFSET &FETCH nicht. In Anbetracht dessen wollte ich ein wenig Perspektive hinzufügen. Ich denke nicht, dass es viel ausmachen sollte.

Wenn Sie sich in ein ORM wie Entity Framework einkaufen, lagern Sie Ihre Abfragegenerierung aus (aus absolut triftigen Gründen). Ob EF den „älteren“ CTE verwendet Stilabfrage mit Row_Number() oder das neuere Fetch / Offset ist ein Implementierungsdetail. Microsoft könnte den EF-Code jederzeit aktualisieren und die Abfragegenerierung ändern, um das eine oder andere zu verwenden.

Wenn Sie die Abfragegenerierung steuern möchten, können Sie entweder:

  • Verwenden Sie die 'Stored Procedure Mapping'-Fähigkeit von EF
  • Gespeicherte Prozeduren direkt mit EF verwenden (was ich ziemlich oft mache)
  • ADO/SQL selbst schreiben, oder
  • Verwenden Sie ein eingeschränkteres Mikro-Orm wie Massive/PetaPoco

Spielt es also eine Rolle?

Nun, für einen Entwickler, der Abfragen schreibt, wird die neue Syntax eine willkommene Erleichterung sein. Andererseits ist es wird nicht angezeigt dass es einen echten Leistungsunterschied zwischen gibt die alte CTE-Methode und die neue Syntax. Aus Sicht von EF also nicht wirklich. Uns entsteht ein erheblicher Overhead Wenn Sie EF verwenden, ist die Paging-Methode wahrscheinlich nicht Ihr Haltepunkt.