質問: エンティティフレームワーク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-inentity-framework.html )の急変であることを理解しました。しかし、修正は、EDMXファイルのProviderManifestToken属性を "2008"に変更することです。 問題は、現在EF7はコードファーストのシナリオしかサポートしていないため、EDMXは存在しません。問題は、Entity Framework 7でASP.NET 5 Webサイトを構成して2012年より古いSQL Serverの代替ページングアプローチを使用する方法です。
回答: 私はEF 7とSQL Server 2008を使って自分自身でこの問題に遭遇しました。幸い、EF 7の最新のrc1バージョンでは、次の例に示すように.UseRowNumberForPaging()を使用してこれを解決できます。 ``` services.AddEntityFramework() .AddSqlServer() .AddDbContext(options => options.UseSqlServer(configuration["Data:DefaultConnection:ConnectionString"]) // this is needed unless you are on mssql 2012 or higher .UseRowNumberForPaging() ); ```