0

私は以下のコードを持っています。コードはより理解のために要約されていますが、私はそれぞれの削除ステートメントにtry catchブロックを持っています。 :MVCの一括削除

私はforeachループでレコードを削除するだけで、バルク挿入を実行しています。 すべて正常でしたが、データ量が増えました。 foreachループは50,000回ループします。

ここで何が起こっているのかは、未知の理由でアプリケーションが途中で停止していて、&がforeach内のどこかで破損しています。データが大量に削除されています&一括挿入が実行されないので、データが大幅に損失します。

私はログも持っているのでエラーは出ませんが、アプリケーションはBulkInsertに届きません。そして、まれにしか起こらない&です。

このような状況で私は何ができますか?一括削除の実行方法私のケースでトランザクションをロールバックする方法は?

+0

あなたはEF6を使用していますか? (あなたの内側のforeach計算は削除されたアイテムを使用していますか?foreachの後でそれらを削除しない理由) –

+0

また、EF経由で50,000以上のデータを読み込むのは悪い習慣です。小さなバッチで全部を処理すると思うかもしれません(フルリストを読み込むときにページ番号を使用してください) –

+0

@AndreiFilimon私はこのページで大きな処理を行っていますが、ページング処理の対象はありません。 – Anup

答えて

0

免責事項:私は、このライブラリは、あなたがあなたのシナリオに必要なすべての一括操作を実行することができますEntity Framework Extensions

の持ち主だ:

  • 一括挿入
  • 一括削除
  • 一括更新
  • バルクマージ

さらにはBulkSaveChanges。

これはEntity Frameworkトランザクションを使用するため、必要に応じてEntity Frameworkから新しいトランザクションを開始するだけです。

// Easy to use 
context.BulkSaveChanges(); 

// Easy to customize 
context.BulkSaveChanges(bulk => bulk.BatchSize = 100); 

// Perform Bulk Operations 
context.BulkDelete(customers); 
context.BulkInsert(customers); 
context.BulkUpdate(customers); 

// Customize Primary Key 
context.BulkMerge(customers, operation => { 
    operation.ColumnPrimaryKeyExpression = 
     customer => customer.Code; 
}); 
関連する問題