1

EF 5、POCO オブジェクト、および SqlQuery を使用しています。オブジェクトの実体化は非常に遅く、約 20 秒かかります。SQL Management Studio を使用して SQL クエリを実行すると、クエリは約 2 秒で実行されます。(例 this.context.mytable.SqlQuery(query).AsNoTracking.ToList())

私は以前、EF 4、Generated Entities、および ExecuteStoreQuery を使用して、まったく同じ SQL クエリを使用していました。オブジェクトの具体化は、約 10 秒ほど遅くはありませんでした。

POCO を使用した場合のパフォーマンスの違いはなぜですか? 同じ遅い(20秒)結果のPOCOを使用して、DbContextからExecuteStoreQueryを使用しようとしました。

何か案は?

よろしくお願いします!

アップデート:

  1. エンティティ クラス:
    2 つのエンティティ クラス。1 つは基本クラスです。2 つの間には約 27 の列/プロパティがあり、ほとんどが基本クラスにあります。

  2. 選択結果のオブジェクト数:
    約 75K。

  3. ストア クエリが実行されている:
    クエリは、(1=1) のビューからの選択 (列) です。

  4. 使用されている API (DbContext または ObjectContext)
    EF 5/POCO シナリオでは、DbContext を使用しています。
    EF 4/Generated エンティティのシナリオでは、ObjectContext を使用しています。

    **EF 5/DbContext を使用する場合、(下位レベルの) ObjectContext および ExecuteStoreQuery メソッドにもアクセスしようとしましたが、DbContext SqlQuery と同じ遅い結果になりました。

4

1 に答える 1

0

誤警報... 多くのオブジェクトを具体化するときにパフォーマンスを低下させる poco の少量の反映になってしまいました。

于 2013-01-18T01:12:36.923 に答える