質問: context.SomeTable2.ToListAsync(); await Task.WhenAll(task1, task2); } } ```
回答: これは、バージョン6の仕様ではサポートされていません。 これにより、 `DbConcurrencyException`例外がスローされます。 > **前の非同期操作が完了する前に、このコンテキストで2番目の操作が開始されました。** 「await」を使用して、このコンテキストで別のメソッドを呼び出す前に、非同期操作が完了していることを確認してください。インスタンスメンバーは、スレッドセーフであるとは限りません。 > > EFは、開発者が一度に2つの非同期操作を実行**してスロー**しようとしたかどうかを**検出し**ます。 > > プロジェクトのcodeplexページから: > データベース操作の非同期実行の有効化は、実際には、同じコンテキストでの同時実行の有効化とは直交しています。サーバーシナリオの特定のケースでは、同時アクセスを使用すると、単一の要求を処理するために任意の数の異なるスレッドをスピンすることになるため、スケーラビリティに悪影響を及ぼす可能性があります。すべてのスレッドは、メモリなどのリソースを求めて、他の同時要求を処理するために必要な他のスレッドと競合します。 > > Entity Framework Core もこのシナリオをサポートしていません 。 > EF Coreは、同じコンテキストインスタンスで実行される複数の並列操作をサポートしていません。次の操作を開始する前に、操作が完了するまで常に待機する必要があります。これは通常、各非同期操作でawaitキーワードを使用して行われます。 > >