Asp.net-Mvc

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

  • May 1, 2015

我正在嘗試使用分頁(即.Skip(...).Take(...)在 Entity Framework 7 中。它適用於 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-break-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-break-change-in-entity-framework.html

引用自:https://stackoverflow.com/questions/29995502