Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Entity Framework e paging di SQL Server 2012

Come ha detto @Ladislav, EF 5 non supporta OFFSET &FETCH. Detto questo, volevo aggiungere un po' di prospettiva. Non credo che dovrebbe importare molto.

Quando acquisti in un ORM come Entity Framework, stai esternalizzando la generazione di query (per motivi perfettamente validi). Se EF utilizza il "vecchio" CTE query di stile con Row_Number() o il più recente Fetch / Offset è un dettaglio di implementazione. Microsoft potrebbe aggiornare il codice EF in qualsiasi momento e modificare la generazione della query per utilizzare l'uno o l'altro.

Se vuoi controllare la generazione della query, puoi:

  • Utilizza l'abilità di "mappatura delle procedure memorizzate" di EF
  • Utilizza le stored procedure direttamente con EF (cosa che faccio abbastanza spesso)
  • scrivi tu stesso l'ADO/SQL oppure
  • usa un micro-orm più limitato come massivo/PetaPoco

Quindi è importante?

Bene, per uno sviluppatore che scrive query la nuova sintassi sarà un gradito sollievo. D'altra parte, non appare che esiste una reale differenza di prestazioni tra il vecchio metodo CTE e la nuova sintassi. Quindi dal punto di vista di EF, non proprio. Sosteniamo un notevole sovraccarico usando EF, il metodo di paging probabilmente non sarà il tuo punto di interruzione.