2012-12-07 9 views
6

DBContextに約18000個のオブジェクトを追加しようとしました。約5分かかりました。 SaveChanges()でこのデータを保存するとさらに時間がかかりました。私は通常のListを作成し、それにオブジェクトを追加することに切り替えました。その後、SqlBulkCopyを使用してデータを保持しました。これには約5秒かかりました。EF DBContext Addメソッドのフードでは何が起こりますか?

Addメソッドは何をしますか?時間がかかるのですか?

+1

(+1)。また、このようなことについて話していますか?:http://stackoverflow.com/questions/5940225/fastest-way-of-inserting-inentity-framework –

+0

はい、ありがとう – Kenci

答えて

1

何が起こるかは、各追加呼び出しで、DetectChangesがコンテキスト上で実行されるということです。これは、オブジェクトグラフ全体を列挙します。したがって、個々の追加に要する時間が長いほど、多くのアイテムを追跡できます。あなたはこれをやっていくだけでも、チューニングを一気にやり遂げることができます(私の家庭のVMには約1k/sのインサートがあります)。チューニングEFなく有効

パフォーマンスはO(N^2)で追加

私は次の記事で詳細をかなりにこのに入る:

方法の詳細deetsについては

EntityFramework Performance and AutoDetectChanges

ここを見て調整されたときに高速EFは、実行することができます。

Entity Framework Comparative Performance

関連する問題