Сводка
В настоящее время я выполняю миграцию проекта на AspNetCore 3.0 и столкнулся с проблемой с GraphQL для .NET ParallelExecutionStrategy при запросе нескольких вещей в одном запросе. Проект использует MSSQL Server в качестве хранилища данных, и доступ к нему осуществляется через 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")));