Резюме
В настоящее время я переношу проект на AspNetCore 3.0 и столкнулся с проблемой с GraphQL для .NET ParallelExecutionStrategy при запросе нескольких вещей в одном запросе. В проекте используется сервер MSSQL в качестве хранилища данных, и доступ к нему осуществляется через Entity Framework Core 3.0. Я получаю следующую ошибку:
Вторая операция началась в этом контексте до завершения предыдущей. Обычно это вызвано тем, что разные потоки используют один и тот же экземпляр DbContext.
Я могу решить проблему, если использую IDocumentExecuter и изменю ParallelExecutionStrategy для ожидания каждого отдельного выполнения с Task.WhenAll
на await ExecuteNodeAsync
(https://github.com/graphql-dotnet/graphql-dotnet/blob/master/src/GraphQL/Execution/ParallelExecutionStrategy.cs#L27).
Пример запроса, который я пытаюсь выполнить:
query {
thingA {
id
}
thingB {
id
}
}
Изменить:
Использование DbContextPool, похоже, тоже не решает проблему:
services.AddDbContextPool<DBCONTEXT>(options =>
options.UseSqlServer(Configuration.GetConnectionString("CONNECTIONSTRING")));