2016-05-03 10 views
5

ASP.NET Coreアプリケーションでは、HTTP要求の範囲外でデータベース操作を行う複数のスレッドを含む複雑なビジネスロジックがあります。要求を処理する同じスレッドからデータベースにアクセスするのは簡単ですが、独自のDbContextを必要とするスレッドを生成する場合、これは面倒です。 DbContext自体はスレッドセーフではないため、IServiceProviderからDbContextを取得するだけでなく、そのオプションとともに新しいDbContextを作成しようとしました。どちらの方法でも、次の例外が発生します。エンティティフレームワークコアとマルチスレッド

設定中にコンテキストを使用しようとしました。 A この時点でまだ が設定されているため、DbContextインスタンスはOnConfiguring内で使用できません。

私はこの問題を間違った方法で近づいていると感じています。このようなデータベース接続を処理するはずがありません。受信した要求を処理するスレッドとは別のスレッドでDbContextを取得する方法を教えてください。

+2

使用するすべてのスレッドでDbContextの新しいインスタンスを作成します。 DbContextはスレッドセーフではありません。 – Mangist

+0

コードを提供できますか? –

答えて

-1

私のテストコードは小さなタイプミスで、すべてのスレッドで同じDbContextを使用していました。ただし、新しいDbContextインスタンスを作成する必要がありますが、私の質問に記載されているようにIServiceProviderで取得することはできません。

関連する問題