1

ストレステストを実行するために、データベースに「偽の」データを入力する必要があります。
そのため、データを入力するための簡単でわかりやすいコードをいくつか書きました。
7 つのテーブルで実行され、それぞれに対してオブジェクトを作成し、以下を使用して追加します。

System.Data.Entity.Add(TEntity)

次のように:

context.MyObject.Add(MyObjInstance);

そして、数百のオブジェクトごとに保存します。

コミットがなくても、これは遅くなります。(数千のオブジェクトの場合、数時間という意味です)。
(約数千の) オブジェクトを追加するより高速な方法はありますか?
のようなものaddAll()、またはAddメソッドを高速化する他のものはありますか?
ありがとう。

4

1 に答える 1

4

への繰り返しの呼び出しが原因である可能性がありますDetectChanges()。一部の EF 関数は、このメソッドを自動的に呼び出します。ここを参照してください。

コンテキスト内で多くのエンティティを追跡していて、これらのメソッドのいずれかをループ内で何度も呼び出す場合、ループ中に変更の検出をオフにすることで、パフォーマンスが大幅に向上する可能性があります。

設定

context.Configuration.AutoDetectChangesEnabled = false;

集中的な.Add()操作を行い、次のように設定します。

context.Configuration.AutoDetectChangesEnabled = true;

電話する前にSaveChanges()

また、コンテキストが追跡するエンティティが多いほどパフォーマンスが低下するため、一括操作の一部に新しいコンテキストを使用することを検討してください。

于 2013-06-06T05:53:01.173 に答える