Ist OFFSET
& amp; FETCH FIRST
keywords, die in SQL Server 2012 eingeführt werden, werden in EntityFramework 5
und Linq to SQL?
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);
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
Tags und Links c# entity-framework linq-to-sql sql-server-2012