SQL Server 2008 ed EF7 (RC1) - Can not Skip () e Take ()?

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

Domanda

Sono consapevole del fatto che SQL Server 2012 e versioni successive presenta una nuova sintassi OFFSET per l'impaginazione, che Entity Framework 7 sembra tradurre a LINQ.

Questo spiega perché sto ricevendo l'errore Incorrect syntax near 'OFFSET'. Invalid usage of the option NEXT in the FETCH statement. perché SQL Server 2008 non lo riconosce.

In questa domanda , qualcuno ha risposto che tutto ciò che dobbiamo fare, dato che RC1 è quello di virare su .UseRowNumberForPaging() su ConfigureServices() di Startup.cs ConfigureServices() .

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

Questo non sembra funzionare. Sto ancora ricevendo lo stesso errore. La mia ipotesi è che EF7 compili ancora il mio LINQ alla nuova sintassi SQL 2012+. Cosa fare?

Risposta popolare

Sembra che la tua domanda sia stata posticipata e risolta a github .

La soluzione a questo problema è, come dichiarato da Arthur Vickers, di andare su Startup.cs del tuo progetto e aggiungere UseRowNumberForPaging() al generatore di opzioni del tuo db.

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

Ho provato questo con .NET Core 2 e funziona bene.




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché