For det første:brug aldrig var ts = new TransactionScope()
. Er den ene liner, der dræber din app. Brug altid den eksplicitte konstruktør, der lader dig specificere isolationsniveauet. Se brug af nye TransactionScope() betragtes som skadelig.
Nu til dit spørgsmål:logikken i ikke at promovere to forbindelser i samme omfang ind i DTC afhænger i høj grad af, at chaufføren/udbyderne samarbejder om at informere Systemet. Transaktioner om, at de to adskilte forbindelser er i stand til at administrere den distribuerede transaktion fint på egen hånd, fordi de involverede ressourceforvaltere er de samme. SqlClient post SQL Server 2008 er en driver, der er i stand til at udføre denne logik. Den Oracle-driver, du bruger, er det ikke (og jeg er ikke bekendt med nogen version, det er, btw).
I sidste ende er virkelig virkelig virkelig grundlæggende:Hvis du ikke vil have en DTC, skal du ikke oprette en! Sørg for at bruge præcis én forbindelse i scopet. Det kan klart diskuteres, at du ikke behøver to forbindelser. Med andre ord skal du slippe af med de to separate depoter i din datamodel. Brug kun ét lager til ordrer, inventar og hvad ellers hvad ikke. Du skyder dig selv i foden med dem, og du beder om nissestøvløsninger.
Opdatering:Oracle-driver 12c r1:
"Transaktions- og forbindelsestilknytning:ODP.NET-forbindelser adskilles som standard kun fra transaktioner, når forbindelsesobjekter lukkes, eller transaktionsobjekter bortskaffes"