Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Entity Framework et pagination SQL Server 2012

Comme @Ladislav l'a dit, EF 5 ne prend pas en charge OFFSET &FETCH. Cela dit, je voulais ajouter un peu de perspective. Je ne pense pas que cela devrait avoir beaucoup d'importance.

Lorsque vous achetez un ORM comme Entity Framework, vous sous-traitez la génération de votre requête (pour des raisons parfaitement valables). Si EF utilise l'ancien CTE requête de style avec Row_Number() ou le plus récent Fetch / Offset est un détail d'implémentation. Microsoft pourrait mettre à jour le code EF à tout moment et modifier la génération de la requête pour utiliser l'un ou l'autre.

Si vous souhaitez contrôler la génération de la requête, vous pouvez :

  • Utiliser la capacité de "mappage de procédure stockée" d'EF
  • Utiliser des procédures stockées directement avec EF (ce que je fais assez souvent)
  • écrivez vous-même l'ADO/SQL, ou
  • utiliser une micro-orme plus limitée comme massive/PetaPoco

Alors est-ce important ?

Eh bien, pour un développeur qui écrit des requêtes, la nouvelle syntaxe sera un soulagement bienvenu. D'autre part, il ne s'affiche pas qu'il existe une réelle différence de performances entre l'ancienne méthode CTE et la nouvelle syntaxe. Du point de vue d'EF, pas vraiment. Nous encourons des frais généraux importants en utilisant EF, la méthode de pagination ne sera probablement pas votre point d'arrêt.