私の現在のプロジェクトでは、外部システムとの毎日の同期が必要です。同期は、広範なビジネス ロジックで解析および処理される複雑なインポート ファイル構造に基づいています。ビジネス ロジックのため、ストアド プロシージャや統合サービスで同じロジックを記述する代わりに、これを .NET コードで作成し、既存の BL コンポーネントを再利用することにしました。
BL レイヤーは、EF 4.0 データ アクセス レイヤーの上にあります。現在の実装プロセスでは、インポート バッチが処理され、すべての変更が ObjectContext に入力され、トランザクションで SaveChanges が実行されます。SQLプロファイラーを確認すると、EFが各エンティティの変更を単一のSQLコマンドとして実行することがわかります(DBへの独自のラウンドトリップを使用)。さらに、これらのコマンドは完全に順番に実行されているようです。したがって、最初のインポートではデータベースへの最大 100.000 ラウンドトリップがあり、毎日の同期ではデータベースへの 10.000 ~ 50.000 ラウンドトリップがあります。
EF自体またはプロバイダー/拡張機能によって、何らかの方法で挿入/更新/削除コマンドをバッチ処理することは可能ですか?