0

レコードが同じタイプであっても、大量のレコードを保存する場合、SaveChangesは非常に遅いようです。以下の画像は、最大60000レコードを保存しようとするプロファイリングセッションを示しています。レコードは混合タイプですが、それらの多くは同じタイプを共有しています。私の予想では、SaveChangesによって呼び出されるCreateDbCommandDefinitionは、レコードタイプごとに1回呼び出されます。驚くべきことに、レコードごとに個別に呼び出されます。もちろん、これはパフォーマンスの低下につながります。

EF 4.3.1と5.0の両方でこれを確認しましたが、同じ結果です。データベースに挿入/更新されたレコードごとにコマンドが作成されないようにEFを構成する方法はありますか?

4

1 に答える 1

2

EF は、各変更を個別の SQL コマンドで実行し、データベースへの個別のラウンドトリップを実行します。これがパフォーマンスの低下の主な理由です。現在、これを変更する方法はありません。ただし、EF ソース コードを codeplex からダウンロードし、コマンドのバッチ処理を自分で実装する必要があります。関連する作業項目機能の要求さえあります。

于 2012-08-01T11:27:27.570 に答える