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

Su pregunta parece haber sido publicada y resuelta en github .

La solución a este problema es, como lo indica Arthur Vickers, ir a Startup.cs su proyecto y agregar UseRowNumberForPaging() al generador de opciones de su db.

services.AddDbContext<ApplicationDbContext>(
  options => {
    options.UseSqlServer(
      this.config.GetConnectionString("MyDatabaseConnectionString"),
      builder => builder.UseRowNumberForPaging()
    );
  }
);

He probado esto con .NET Core 2 y funciona bien.



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é