SQL Server 2008和EF7(RC1) - 無法跳過()和Take()?

asp.net-core entity-framework-core pagination sql-server-2008

我知道SQL Server 2012及更高版本的分頁有一個新的OFFSET語法,實體框架7似乎將我的LINQ轉換為。

這解釋了為什麼我Incorrect syntax near 'OFFSET'. Invalid usage of the option NEXT in the FETCH statement.收到錯誤Incorrect syntax near 'OFFSET'. Invalid usage of the option NEXT in the FETCH statement.錯誤的原因Incorrect syntax near 'OFFSET'. Invalid usage of the option NEXT in the FETCH statement.因為SQL Server 2008無法識別它。

這個問題中 ,有人回答說我們需要做的就是從RC1開始,在Startup.cs的ConfigureServices()使用.UseRowNumberForPaging() ConfigureServices()

services.AddEntityFramework()
                    .AddSqlServer()
                    .AddDbContext<MyDbContext>(options => {
                        options.UseSqlServer("someConnectionString").UseRowNumberForPaging();                        
                    });

這似乎不起作用。我仍然得到同樣的錯誤。我的猜測是EF7仍然將我的LINQ編譯為新的2012+ SQL語法。該怎麼辦?

熱門答案

您的問題似乎是在github上交叉發布並解決的。

正如Arthur Vickers 所述 ,解決這個問題的方法是轉到項目的Startup.cs並將UseRowNumberForPaging()添加到db的選項構建器中。

services.AddDbContext<ApplicationDbContext>(
  options => {
    options.UseSqlServer(
      this.config.GetConnectionString("MyDatabaseConnectionString"),
      builder => builder.UseRowNumberForPaging()
    );
  }
);

我用.NET Core 2測試了它,它工作正常。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow