私はこのようにやっています:
entities.AsParallel().ForAll(o => repository.Insert(o));
これは良いですか、これでより多くのパフォーマンスが得られますか?
いいえ。
これはSQLへの並列処理を利用するため、より高速になりますが、最終的にSQLは挿入を行うため、テーブル(ページ)をロックする必要があります。したがって、各並列要求は次々に実行されます。
一括挿入を行う場合は、すべてのエントリを受け入れるSP(SQL 2008を使用するテーブルなど)を作成するか、Linq2SQLを使用して実行します。
それが正しい設計ソリューションになります。
おそらくそうではありません。各挿入は実際には別々のスレッドで行われますが、一括挿入は、単一のスレッドから一度に大量のデータを転送することでうまく機能します。
PS:SqlBulkCopyは、並列挿入よりもはるかにうまく機能します。可能であればそれを使用してください。