30 万行のようなデータ ボリュームの場合、EF は忘れてしまいます。次のようなテーブルを用意してこれを行います:
BatchId RowId
プレ>ここで、RowId は更新する行の PK であり、BatchId はこの 30 万行の「実行」を参照するだけです (一度に複数を許可するためなど)。
新しい BatchId を生成し (これは一意のものである可能性があります -Guid が頭に浮かびます)、SqlBulkCopy を使用してこのテーブルにレコードを挿入します。つまり、
100034 17 100034 22 ... 100034 134556
プレ>次に、simgle sproc を使用して結合と更新を行います (そして、テーブルからバッチを削除します)。
SqlBulkCopy は、この量のデータをサーバーに取得する最速の方法です。往復で溺れることはありません。 EF はオブジェクト指向です。多くのシナリオに適していますが、このシナリオには適していません。