Entity Framework 7とSQL Server 2008のページング

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

質問

エンティティフレームワーク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<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-inentity-framework.html



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ