[VB.NET] Transazioni su più form?

lunedì 06 agosto 2007 - 08.22

Molok Profilo | Newbie

Salve a tutti,
Premetto di avere gia' dato un'occhiata al forum ma non ho trovato spiegazione esaurienti su questo argomento.
Mi trovo in una situazione mai incontrata prima. Fino ad ora le transazioni che le ho usate quando ero nella situazione di effettuare piu aperazioni col db sequenziali. esempio:
1) premo il tasto salva sul form
2) apro transazione
3) effettuo prima istruzione sql
4) effettuo la seconda
5) se andato tutto bene faccio commit altrimenti rollback e trono alla situazione del database del punto 2

Ora cosa mi accade. L'applicazione che sto sviluppando è un'applicativo web e mi trovo trovo a lavorare su una pagina e un popup a questo punto quando premo salva sul pop up devo iniziare la transazione che dovrebbe finire solo quando premo salva anche sulla webform che sta sotto.
Solo che quando si chiude il popup la transazione va a farsi friggere.
Mi spiego meglio non riesco a fare qualcosa del tipo :
1) premo tasto su salve nel popup
2) apro transazione
3) eseguo la mia prima istruzione sql
4) si chiude il pop up
5) premo salva sulla webform
6) eseguo la mia seconda istruzione sql
7) controllo se è andato tutto bene e faccio commit o roolback


I problemi nascono al punto 6 perche mi dice che non esiste nessuna transazione evidentemente quando si chiude il popup mi chiude anche la transazione...
Vi è mai capitato un problema di questo tipo????
come lo avete risolto???

erongis Profilo | Junior Member

Non riesci a portare la parte di salvataggio in una classe che salva alla fine? Nel senso che la prima form salva su una collection, quando confermi alla seconda form, mandi tutto al DB ed inizi la transazione.

in poche parole lavori disconnesso. Le due form servono solamente a riempire i dati nella colection. Appena hai finito di riempire le collection salvi tutto su DB con una operazione.

munissor Profilo | Senior Member

Premettendo che la cosa non è il massimo prova a fare in questo modo:

Prova a mettere l'oggetto Transaction in una variabile di sessione, lo istanzi nella prima pagina e lo rilasci nell'ultima dopo aver fatto il commit o il rollback. Forse devi fare lo stesso anche con la connessione. Secondo me quando fa il postback esegue il dispose degli oggetti "locali" della pagina quindi ti chiude tutto... se invece li fai sopravvivere dovrebbe funzionare..
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5