Transactioscope

giovedì 02 marzo 2006 - 11.59

alfatt Profilo | Newbie

Ciao a tutti
ho bisogno di un aiutino con per il transactionscope.
Lavoro con visual studio 2005 e quindi con il .net 2.0. Ho bisogno di effettuare delle transazioni da codice per operazioni su ORACLE. Come da teoria ho usato la transactionscope, ma sia che la uso normalmente o inserisco ogni tipo di option, il risultato è sempre lo stesso:
se faccio 2 insert di cui una va a buon fine e l'altra va in exception (quindi non faccio la complete della transactionscope) comunque la prima viene committata. L'utilizzo sembra abanale, non è che va settato qualcosa su oracle?
Utilizzo oracle 10g e quindi i relativi provider.
Che mi dite?
grazie.
Alfonso

Brainkiller Profilo | Guru

>Come da teoria ho usato la transactionscope, ma sia che la uso
>normalmente o inserisco ogni tipo di option, il risultato è sempre
>lo stesso:
>se faccio 2 insert di cui una va a buon fine e l'altra va in
>exception (quindi non faccio la complete della transactionscope)

Ciao Alfonso,
non mi risulta. Oracle è un DB transazionale e non mi risulta che sia da abilitare qualche opzione, con quello che costa !

Solitamente le operazioni sono banali, si definisce un inizio transazione o TransactionScope magari prima di un blocco try...catch all'interno del try si mettono tutte le istruzioni di inserimento, modifica, cancellazione, nel catch piazzi un bel rollback della transazione in caso d'errore ed un'eventuale uscita dalla procedura, e nel finally invece un bel Commit.

Se la prima insert viene eseguita evidentemente la stai eseguendo fuori transazione.
ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

alfatt Profilo | Newbie

Infatti non capisco perchè non mi funzioni. Sembrerebbe un utilizzo banale...
intanto grazie dell'aiuto e per curiosità ti allego l'esempio.

Grazie ancora
Alfonso

Brainkiller Profilo | Guru

Ciao,
io le Transaction in Oracle le faccio così:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

ciao
David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

alfatt Profilo | Newbie

Ciao David, scusa il ritardo.
Ho visto il tuo esempio ed e' chiarissimo, il problema è che io sto tentando di mettere su il concetto della transazione usando le transaction scope per poter predispormi ad inserimenti usando diverse connessioni che vanno sullo stesso db ma che potrebbero andare anche su db diversi e tutte devono stare in transazioni.

Brainkiller Profilo | Guru

Ciao,
ti consiglio la lettura di questo link e relativi sottoparagrafi:
http://msdn2.microsoft.com/en-us/library/w97s6fw4.aspx

Inoltre ti riporto un frammento contenuto in questi link:

"The infrastructure provided by the classes in the System.Transactions namespace makes transactional programming simple and efficient by supporting transactions initiated in SQL Server, ADO.NET, Message Queuing (MSMQ), and the Microsoft Distributed Transaction Coordinator (MSDTC)."

Oracle non lo vedo, anche se in teoria dovrebbe funzionare.
Altrove ho visto che forse bisogna configurare Oracle per funzionare con il servizio DTC.

Per finire ti consiglio la lettura anche di questo pacco:
http://msdn.microsoft.com/library/en-us/dndotnet/html/introsystemtransact.asp
ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

alfatt Profilo | Newbie

Dai link che mi hai suggerito ho capito che il problema era dovuto alla mancata installazione dell' OraMTS, ossia il supporto oracle per microsoft pper la gestione delle transazioni (in particolare del TransactionScope).
Ciao
Grazie.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5