Paginación con Entity Framework 7 y SQL Server 2008

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

Pregunta

Estoy tratando de usar la paginación (es decir .Skip(...).Take(...) en Entity Framework 7. Funciona bien con Microsoft SQL Server 2012 y 2014, pero falla con el siguiente error en SQL Server 2008 :

System.Data.SqlClient.SqlException (0x80131904): Sintaxis incorrecta cerca de 'OFFSET'. Uso no válido de la opción NEXT en la declaración FETCH.

Me he dado cuenta de que se trata de un cambio importante en la versión 6.1.2 de EF ( http://erikej.blogspot.com/2014/12/a-breaking-change-in-entity-framework.html ). Pero la solución es modificar el archivo EDMX configurando el atributo ProviderManifestToken a "2008".

El problema es que EF7 actualmente solo admite el escenario de código primero, por lo tanto, no hay ningún EDMX por ahí. La pregunta es: ¿cómo configurar el sitio web ASP.NET 5 con Entity Framework 7 para usar el enfoque de paginación de reserva para SQL Server anterior a 2012?

Respuesta aceptada

Me encontré con este problema usando EF 7 y el servidor sql 2008. Afortunadamente, en la última versión rc1 de EF 7, puede resolverlo utilizando .UseRowNumberForPaging () como se muestra en este ejemplo:

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

Respuesta popular

Si usa el archivo Edmx, debe abrir el archivo edmx usando el Editor XML y cambiar

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

en linea 7.

Por favor, eche un vistazo a esta publicación de blog para obtener más información: http://erikej.blogspot.com.tr/2014/12/a-breaking-change-in-entity-framework.html




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é