使用Entity Framework 7和SQL Server 2008進行分頁

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

我正在嘗試使用分頁(即.Skip(...).Take(...)在實體框架7中.Skip(...).Take(...)它適用於Microsoft SQL Server 2012和2014,但在SQL Server 2008上出現以下錯誤失敗:

System.Data.SqlClient.SqlException(0x80131904):'OFFSET'附近的語法不正確。 FETCH語句中NEXT選項的使用無效。

我已經發現它是EF版本6.1.2( http://erikej.blogspot.com/2014/12/a-breaking-change-in-entity-framework.html )的重大變化。但修復方法是將EDMX文件設置ProviderManifestToken屬性修改為“2008”。

問題是EF7目前只支持代碼優先方案,因此沒有任何EDMX。問題是:如何使用Entity Framework 7配置ASP.NET 5網站,以便為早於2012的SQL Server使用回退分頁方法?

一般承認的答案

我自己使用EF 7和sql server 2008遇到了這個問題。幸運的是,在EF 7的最新rc1版本中,你可以通過使用.UseRowNumberForPaging()來解決這個問題,如下例所示:

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

熱門答案

如果使用Edmx文件,則必須使用XML編輯器打開edmx文件並進行更改

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

在第7行。

有關更多信息,請查看此博客文章: http//erikej.blogspot.com.tr/2014/12/a-breaking-change-in-entity-framework.html




許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因