エンティティの大きな山を実行する修正コードを実行しています。速度が低下するにつれて、コンテキスト内の追跡されるエンティティの数が反復ごとに増加するためです。時間がかかる可能性があるため、最後に変更を保存しています。各反復の。各反復は独立しており、以前にロードされたエンティティを変更しません。
変更の追跡をオフにできることはわかっていますが、一括挿入コードではないため、オフにしたくありませんが、エンティティを読み込んでいくつかの計算を行い、数値が正しくない場合は、新しい数値を設定して更新/削除/作成しますいくつかの追加エンティティ。反復ごとに新しいDbContextを作成でき、おそらく同じインスタンスですべてを実行するよりも高速に実行できることはわかっていますが、もっと良い方法があるのではないかと考えています。
したがって、問題は次のとおりです。以前にdbコンテキストにロードされたエンティティをクリアする方法はありますか?
context.Entry(entity).State = EntityState.Detached
、その特定のエンティティの追跡が停止します。