Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Entity Framework e Paginação do SQL Server 2012


Como @Ladislav disse, o EF 5 não suporta OFFSET &FETCH. Com isso dito, eu queria adicionar um pouco de perspectiva. Acho que não deve importar muito.

Quando você compra em um ORM como o Entity Framework, você está terceirizando sua geração de consulta (por razões perfeitamente válidas). Se o EF usa o CTE 'mais antigo' consulta de estilo com Row_Number() ou o mais recente Fetch / Offset é um detalhe de implementação. A Microsoft pode atualizar o código EF a qualquer momento e alterar a geração da consulta para usar um ou outro.

Se você deseja controlar a geração da consulta, você:
  • Use a capacidade de 'mapeamento de procedimento armazenado' do EF
  • Usar procedimentos armazenados diretamente com o EF (algo que faço com bastante frequência)
  • escreva você mesmo o ADO/SQL ou
  • use um micro-orm mais limitado como massivo/PetaPoco

Então isso importa?

Bem, para um desenvolvedor que escreve consultas, a nova sintaxe será um alívio bem-vindo. Por outro lado, não aparece que existe uma diferença de desempenho real entre o antigo método CTE e a nova sintaxe. Então, do ponto de vista da EF - não realmente. Incorremos em sobrecarga significativa usando EF, o método de paginação provavelmente não será seu ponto de interrupção.