Er is hier niets magisch, u krijgt de foutmelding omdat de verbinding die u gebruikt bij het invoegen van CompanyAddress niet degene is die u denkt dat het is.
Het is een nieuwe verbinding. Wanneer ComapnyPaymentInfo insert wordt uitgevoerd, gebruikt u de verbinding die al aan uw transactie is gekoppeld. Het wacht op nieuwe commando's omdat je in de vorige stap hebt gewacht.
Het gebruik van Task.WhenAll() aan de andere kant zal proberen om meerdere threads te gebruiken. Als een verbinding bezig is met het uitvoeren van een opdracht, wordt deze niet gebruikt en wordt er een nieuwe gemaakt.
Onthoud dat wanneer je Transacties gebruikt, je maar één verbinding beschikbaar hebt, je kunt niet profiteren van parallellisme.