9

SQL Server 2012 では、FETCH と OFFSET を使用したより効率的なページング メカニズムが導入されています。これは、多くのページングを使用するアプリのパフォーマンスに大きな影響を与える可能性があります。Entity Framework 5 はこれをサポートしていますか? EF が SQL Server 2012 をターゲットにしている場合、Take + Skip を使用して EF を使用してページングする場合、LINQ クエリは新しい 2012 TSQL に変換されますか?

4

2 に答える 2

11

@Ladislav が言ったように、EF 5 は OFFSET と FETCH をサポートしていません。そうは言っても、私は少し視点を追加したいと思いました。あまり重要ではないと思います。

Entity Framework のような ORM を購入すると、クエリの生成を外部に委託することになります (完全に正当な理由により)。EF が「古い」 CTEスタイルのクエリを使用するRow_Number()か、新しいFetch/を使用するかOffsetは、実装の詳細です。Microsoft は、任意の時点で EF コードを更新し、クエリの生成を変更して、どちらか一方を使用することができます。

クエリの生成を制御するには、次のいずれかを行います。

  • EF の「ストアド プロシージャ マッピング」機能を使用する
  • ストアド プロシージャを EF で直接使用する (私が頻繁に行うこと)
  • ADO/SQL を自分で作成する、または
  • Massive/PetaPoco のようなより制限されたマイクロオームを使用する

それで、それは問題ですか?

クエリを作成する開発者にとって、新しい構文は歓迎すべき安心となるでしょう。一方、古い CTE メソッドと新しい構文の間に実際のパフォーマンスの違いがあるようには見えません。EF の観点から言えば、そうではありません。EF を使用するとかなりのオーバーヘッドが発生します。ページングの方法は、おそらくブレーク ポイントにはなりません。

于 2012-04-24T20:46:15.457 に答える
9

EF 5 はこの機能をサポートしていません。実際、EF では SQL Server 2012 の機能を利用できないと思います。Data UserVoiceでこの機能に投票して、ADO.NET チームの製品バックログの上位に移動できます。

于 2012-04-20T11:31:42.283 に答える