0

1 つのコンテキストを作成し、Parallel.ForEach(...) を使用して複数の EF クエリを同時に実行します。

「接続が閉じられませんでした。接続の現在の状態は接続中です。これらの線に沿ったその他の例外。

これは、アプリケーションのスレッド化された性質によるものですか? 単一のコンテキストを同時に使用して、単純に読み取ることはできませんか?

4

1 に答える 1

3

オブジェクト コンテキストはスレッド セーフではないため、マルチスレッド シナリオでは Parallel.Foreach を使用したくないでしょう。

ただし、たとえば MARS を有効にすると、同じ接続で複数のクエリを並行して実行できます。

foreach (var employee in context.employees.where(...))
{
   var department = employee.departments.FirstOrDefault(...);
}

ただし、パフォーマンスに注意する必要があります。

于 2012-09-18T01:54:43.067 に答える