2012-04-20 41 views
9

SQL Server 2012 presenta un mecanismo más eficiente para paginación usando FETCH y OFFSET que podría tener un gran impacto en el rendimiento de las aplicaciones que usan mucha paginación. ¿Entity Framework 5 es compatible con esto? Entonces, si estoy usando EF para enviar páginas usando Take + Skip, ¿las consultas LINQ se traducirán al nuevo TSQL 2012 si EF apunta a SQL Server 2012?Entity Framework y SQL Server 2012 Paging

+0

No es más eficiente. Más legible –

+0

Fetch y Offset tienen un beneficio de rendimiento, ya que reducen la carga útil devuelta por SQL Server http://www.mssqltips.com/sqlservertip/2696/comparing-performance-for-different-sql-server-paging-methods/ – Judo

+0

@Judo Los enfoques basados ​​en ROW_NUMBER devuelven el mismo conjunto de resultados. Sin embargo, puede haber beneficios de rendimiento por diferentes razones. – John

Respuesta

9

EF 5 no es compatible con esta característica, de hecho, creo que ninguna de las características de SQL Serve 2012 está disponible en EF. Puede votar por esta función en Data UserVoice para moverla en la cartera de pedidos del equipo de ADO.NET.

11

Como dijo @Ladislav, EF 5 no es compatible con OFFSET & FETCH. Dicho esto, quería agregar un poco de perspectiva. No creo que debería importar mucho.

Cuando compra en un ORM como Entity Framework, está obteniendo la generación de su consulta (por razones perfectamente válidas). Si EF utiliza la consulta de estilo 'anterior' CTE con Row_Number() o la más reciente Fetch/Offset es un detalle de implementación. Microsoft podría actualizar el código EF en cualquier momento y cambiar la generación de consultas para usar una u otra.

Si desea controlar más de la generación de consultas, ya sea:

  • uso de EF 'mapeo procedimiento almacenado' capacidad
  • Utilizar procedimientos almacenados directamente con EF (algo que hago muy a menudo)
  • escritura ADO/SQL usted mismo, o
  • uso más limitado de micro-ORM como masiva/PetaPoco

¿Entonces importa?

Bueno, para un desarrollador que escriba consultas la nueva sintaxis será un alivio bienvenido. Por otro lado, es doesn't appear que existe un verdadero performance difference between el antiguo método CTE y la nueva sintaxis. Entonces, desde la perspectiva de EF, no realmente. Se incurre en un significant overhead usando EF, el método de paginación probablemente no será su punto de ruptura.