1. ホーム
  2. entity-framework

[解決済み] Entityフレームワークのバルクインサートのパフォーマンス向上【重複あり

2022-09-08 15:29:17

質問

エンティティフレームワークでテーブルに2万レコードを挿入したいのですが、2分ほどかかります。SPを使用する以外にパフォーマンスを向上させる方法はないでしょうか。これは私のコードです。

 foreach (Employees item in sequence)
 {
   t = new Employees ();
   t.Text = item.Text;
   dataContext.Employees.AddObject(t);                  
 }
 dataContext.SaveChanges();

どのように解決するのですか?

いくつかの改善の機会があります。 DbContext ):

設定します。

yourContext.Configuration.AutoDetectChangesEnabled = false;
yourContext.Configuration.ValidateOnSaveEnabled = false;

する SaveChanges() 100枚入りのパッケージで... または、1000アイテムのパッケージで試して、パフォーマンスの変化を見ることができます。

このすべての挿入の間、コンテキストは同じであり、それは大きくなっているので、あなたは、次のことができます。 1000 回挿入するごとにコンテキストオブジェクトを再構築します。 var yourContext = new YourContext(); これが大きな収穫だと思います。

私のデータのインポート処理でこの改善を行ったところ、7分かかっていたのが6秒になりました。

実際の数値は...あなたの場合、100とも1000とも言えないかもしれませんが...試して微調整してください。