私が現在構築しているシステムでは、計算サービスを提供する API に対して Web リクエストを行う必要があります。このサービスには、データベースから取得する必要がある一連の複雑なパラメーターが必要です。現在、これらのエンティティを取得するためにエンティティ フレームワークを使用しています。エンティティごとに、この API にリクエストを送信し、結果を取得し、最後にすべての結果をデータベースに保存します (すべて同期的に行われます)。
エンティティのセットが増えると、このアプローチではスケーリングの問題が発生します (エンティティごとに 30 分ごとに計算サービスを呼び出す必要があるため)。このため、エンティティのデータベース取得と Web リクエストを、他のエンティティの同じ操作と並行して (または非同期で) 行いたいと考えています。(データの読み込み時間を短縮するためではなく、webrequest の完了を待っている間に作業を行うため)
EF 5 コンテキストはスレッド セーフではないため、これを達成するための最良の代替手段は何ですか? 特定の SQL クエリを記述したり、LINQ を使用したりする必要がありますか? 誰もが同様のアプローチのコード例を持っていますか(webrequestのdb検索を並行して)
編集 小さなコードサンプルを追加します(非常に単純化されています)。Web サービスの呼び出しに数秒かかると仮定すると、これはスケーリングされません。
foreach(entityId in entityIds)
{
var entity = _repository.Find(entityId);
_repository.LoadData(entity);
_validator.ValidateData(entity);
var result = _webservice.Call(entity);
entity.State = result.State;
}
_repository.SaveChanges();