概括
我目前正在将一个项目迁移到 AspNetCore 3.0,并且在一个查询中查询多个内容时遇到了 GraphQL for .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")));