PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

A transação não pode lidar com comandos paralelos via Task.WhenAll


Não há nada de mágico aqui, você recebe o erro porque a conexão que você está usando ao inserir CompanyAddress não é aquela que você pensa que é.

É uma nova conexão. Quando a inserção ComapnyPaymentInfo é executada, você está usando a conexão que já está vinculada à sua transação. Está pendente de novos comandos porque você esperou na etapa anterior.

O uso de Task.WhenAll(), por outro lado, tentará usar vários threads. Se uma conexão estiver ocupada executando um comando, ela não será usada e uma nova será gerada.

Lembre-se que ao usar Transações, você tem apenas uma conexão disponível, você não pode se beneficiar do paralelismo.