Task task1 = serviceA.DoSomething();
Task task2 = serviceB.DoSomethingElse();
await Task.WhenAll(task1, task2);
服务不知道它们是在数据库上运行,但如果两个任务最终查询一个数据库,则会出现并发异常。
如Does Entity Framework support parallel async queries?中所述,EF不支持多个异步查询。
是否有模式或某种方法对这些查询/命令进行排队并一个接一个地执行它们(但如果他们遇到单独的数据库,仍会加速执行)?
也许更好的解决方案是将dbContext从每个请求更改为transient和new up dbContext,每个查询都有单独的连接?这对性能有何影响? 首先,我看到每个dbcontext都是单独的事务,并将它们全部提交而不是单个事务。