私たちのアプリでは大きなパフォーマンス上の問題があり、異なるシステムからデータを収集し、DBに保存して後でレポートを生成します。Bulk inserts with EF4.2
エンティティフレームワーク4.2とDbSetsを使用していますが、DbSetの各エンティティのAddメソッドをバルク挿入する方法がありますか?追加ロジック
oneThousandCustomers.Foreach(c => context.Customers.Add(c)); //This will take a minute
context.SaveChanges(); //This takes under a second
を持つ巨大なパフォーマンスの問題があるので、私は、addメソッドは、ボンネットの下にたくさんのルックアップなどとものをやっていると思いますが、私はちょうどバルクにこのデータを挿入します。出来ますか?
CQRSフレームワークを使用し、コンテキストごとにコンテキストが注入されるため、コンテキストの動作を変更することは少し危険です。コンテキストの動作を変更した後、コマンドロジックの他の部分がコンテキストを使用しないという保証はないからです。 – Anders
パフォーマンスが危険であり、妥協が必要な場合は、EFの利点が必要な場合は、パフォーマンスの問題を解決するか、手動でコンテキストを管理してパフォーマンスを最適化する必要があります。これをやりたくない場合は、EFを使用しないでください。しかし、私はCQRS、メッセージングと一括インポート、EF(クエリーとライトの両方)と全く同じことを行い、うまく動作します。 –
既存のコードを変更するのはとても簡単だったので、これを選択します。すべてのユニットテストとシナリオテストは緑色なので、動作しているようです!ありがとう! – Anders