Paging con Entity Framework 7 e SQL Server 2008

asp.net-mvc entity-framework-core paging sql-server-2008

Domanda

Sto cercando di utilizzare il paging (ovvero .Skip(...).Take(...) in Entity Framework 7. Funziona correttamente con Microsoft SQL Server 2012 e 2014, ma non riesce con il seguente errore su SQL Server 2008 :

System.Data.SqlClient.SqlException (0x80131904): sintassi errata vicino a 'OFFSET'. Utilizzo non valido dell'opzione NEXT nell'istruzione FETCH.

Ho capito che si tratta di un cambiamento nella versione 6.1.2 di EF ( http://erikej.blogspot.com/2014/12/a-breaking-change-in-entity-framework.html ). Ma la correzione è modificare l'attributo ProviderManifestToken del file EDMX su "2008".

Il problema è che EF7 attualmente supporta solo uno scenario code-first, quindi non c'è nessun EDMX in circolazione. La domanda è: come configurare il sito Web ASP.NET 5 con Entity Framework 7 per utilizzare l'approccio di impaginazione fallback per SQL Server precedente al 2012?

Risposta accettata

Ho riscontrato questo problema personalmente utilizzando EF 7 e SQL Server 2008. Fortunatamente nell'ultima versione rc1 di EF 7 è possibile risolvere questo problema utilizzando .UseRowNumberForPaging () come mostrato in questo esempio:

services.AddEntityFramework()
  .AddSqlServer()
  .AddDbContext<YourDbContext>(options =>
     options.UseSqlServer(configuration["Data:DefaultConnection:ConnectionString"])
                    // this is needed unless you are on mssql 2012 or higher
                    .UseRowNumberForPaging()
                );

Risposta popolare

Se si utilizza il file Edmx, è necessario aprire il file edmx utilizzando l'editor XML e modificare

ProviderManifestToken="2012" ==> ProviderManifestToken="2008"

nella riga 7.

Si prega di dare un'occhiata a questo post del blog per ulteriori informazioni: http://erikej.blogspot.com.tr/2014/12/a-breaking-change-in-entity-framework.html



Related

Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow