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

È necessario utilizzare SQL2012 + per l'uso skip (). Take (), non funziona in sql2008.

Per il 2008 puoi usare:

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



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é