質問: 30分以上かかる1回のコミットで20000レコードを更新しようとしています。レコード数を減らし、1000レコードをコミットするバッチ処理を実装することを考えています。パフォーマンスを向上させるための提案はありますか?
回答: デフォルトでは、EFは単一の更新に対して1回のクエリを実行します。テーブル値パラメータを受け付けるストアドプロシージャを作成することで、1回のクエリで複数の行を更新し、ラウンドトリップのオーバーヘッドを削減できます。一括挿入でも`SqlBulkCopy`クラスを使用できます。 **更新** :あるいは、これを行うためにサードパーティーのライブラリを使用することができます。 やhttps://entityframework-extensions.net/のようなもの私もバルクインサートのためにSqlBulkCopyの上に簡単なラッパーを使いました。 **アップデート2:**表値パラメータを使用する方法Microsoftの例: それはADO.Netが、同様のためでありますEFでアプローチが可能です。