Pagination avec Entity Framework 7 et SQL Server 2008

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

Question

J'essaie d'utiliser la pagination (c'est-à-dire .Skip(...).Take(...) dans Entity Framework 7. Cela fonctionne correctement avec Microsoft SQL Server 2012 et 2014, mais échoue avec l'erreur suivante sur SQL Server 2008. :

System.Data.SqlClient.SqlException (0x80131904): Syntaxe incorrecte près de 'OFFSET'. Utilisation non valide de l'option NEXT dans l'instruction FETCH.

J'ai compris qu'il s'agissait d'un changement radical dans la version 6.1.2 d'EF ( http://erikej.blogspot.com/2014/12/a-breaking-change-in-entity-framework.html ). Mais le correctif consiste à modifier l'attribut ProviderManifestToken du fichier EDMX en "2008".

Le problème est que EF7 ne prend actuellement en charge que le scénario code-premier, il n’existe donc pas d’EDMX. La question qui se pose est la suivante: comment configurer le site Web ASP.NET 5 avec Entity Framework 7 pour utiliser la méthode de pagination de secours pour SQL Server antérieure à 2012?

Réponse acceptée

J'ai moi-même rencontré ce problème avec EF 7 et SQL Server 2008. Heureusement, dans la dernière version rc1 de EF 7, vous pouvez résoudre ce problème en utilisant .UseRowNumberForPaging (), comme indiqué dans cet exemple:

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

Réponse populaire

Si vous utilisez un fichier Edmx, vous devez ouvrir le fichier edmx à l’aide de XML Editor et le modifier.

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

dans la ligne 7.

Veuillez consulter cet article de blog pour plus d'informations: http://erikej.blogspot.com.tr/2014/12/a-breaking-change-in-entity-framework.html




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi