DBContextに約18000個のオブジェクトを追加しようとしました。約5分かかりました。 SaveChanges()でこのデータを保存するとさらに時間がかかりました。私は通常のListを作成し、それにオブジェクトを追加することに切り替えました。その後、SqlBulkCopyを使用してデータを保持しました。これには約5秒かかりました。EF DBContext Addメソッドのフードでは何が起こりますか?
Addメソッドは何をしますか?時間がかかるのですか?
DBContextに約18000個のオブジェクトを追加しようとしました。約5分かかりました。 SaveChanges()でこのデータを保存するとさらに時間がかかりました。私は通常のListを作成し、それにオブジェクトを追加することに切り替えました。その後、SqlBulkCopyを使用してデータを保持しました。これには約5秒かかりました。EF DBContext Addメソッドのフードでは何が起こりますか?
Addメソッドは何をしますか?時間がかかるのですか?
何が起こるかは、各追加呼び出しで、DetectChangesがコンテキスト上で実行されるということです。これは、オブジェクトグラフ全体を列挙します。したがって、個々の追加に要する時間が長いほど、多くのアイテムを追跡できます。あなたはこれをやっていくだけでも、チューニングを一気にやり遂げることができます(私の家庭のVMには約1k/sのインサートがあります)。チューニングEFなく有効
パフォーマンスはO(N^2)で追加
私は次の記事で詳細をかなりにこのに入る:
方法の詳細deetsについてはEntityFramework Performance and AutoDetectChanges
ここを見て調整されたときに高速EFは、実行することができます。
(+1)。また、このようなことについて話していますか?:http://stackoverflow.com/questions/5940225/fastest-way-of-inserting-inentity-framework –
はい、ありがとう – Kenci