SQL Server 2008 y EF7 (RC1): ¿No puede omitir () y tomar ()?

asp.net-core entity-framework-core pagination sql-server-2008

Pregunta

Soy consciente de que SQL Server 2012 y versiones posteriores tienen una nueva sintaxis de COMPENSACIÓN para la paginación, a la que Entity Framework 7 parece traducir mi LINQ.

Esto explica por qué recibo el error Incorrect syntax near 'OFFSET'. Invalid usage of the option NEXT in the FETCH statement. Porque SQL Server 2008 no lo reconoce.

En esta pregunta , alguien respondió que todo lo que tenemos que hacer, a partir de RC1 es abordar .UseRowNumberForPaging() en los servicios de ConfigureServices() Startup.cs.

services.AddEntityFramework()
                    .AddSqlServer()
                    .AddDbContext<MyDbContext>(options => {
                        options.UseSqlServer("someConnectionString").UseRowNumberForPaging();                        
                    });

Esto no parece funcionar. Todavía estoy recibiendo el mismo error. Supongo que EF7 aún compila mi LINQ con la nueva sintaxis de SQL 2012+. ¿Qué hacer?

Respuesta popular

Debe usar SQL2012 + para usar skip (). Take (), no funciona en sql2008.

Para 2008 puedes usar:

select top 20 * from
(
select *,
ROW_NUMBER() OVER (ORDER BY columnid) AS ROW_NUM
from tablename
) x
where ROW_NUM>10



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué