54 messaggi dal 15 giugno 2004
Salve a tutti, devo realizzare una pagina aspx che effettua 3 inserimenti su database:
- Inserimento anagrafica cliente (tblAnagraficaCliente)
- Inserimento nuova spedizione per il cliente appena inserito (tblSpedizioni)
- Inserimento di un nuovo record su db access

Qualora una di queste operazioni non vada a buon fine tutte e tre devono essere annullate. Fino qui non ci dovrebbero essere problemi utilizzando TrasactionScope.

Quel che vorrei offrire all'utente è un feedback completo delle operazioni che vengono eseguite: quando un utente clicca su "salva" vorrei far comparire un div in cui per ogni operazione mi mostri l'esito.
Es:
- Inserimento nuovo cliente: eseguito
- Inserimento spedizione: eseguito
- Esportazione dati: eseguito

Per fa ciò dovrei usare Ajax.

Il punto è: come faccio a gestire il rollback se utilizzo chiamate asyncrone?
beh devi effettuare tutte le operazioni in un un'unico colpo altrimenti perdi l'effetto del transaction scope, quindi tutte le operazioni devono essere eseguite all'interno dello stesso contesto transazionale. Poi in ciò che avviene all'interno della tua transazione mostri i messaggi a video,
Un'altra possibile soluzione è realizzare una sessione dove ti tieni in memoria gli oggetti nello stato precedente alla modifica ed effetuare le operazioni una alla volta in asyncrono, poi se una va male ripristini lo stato precedente.

Ciauz

imperugo
Microsoft MVP
myblog : http://www.tostring.it
3.168 messaggi dal 06 settembre 2002
Contributi | Blog
Ciao,

se speri che il server ti invii una notifica quando ha fatto un'operazione sei fuori strada. ogni volta che fai un'operazionela metti in una variabile di sessione e poi usi il controllo timer di ajax per vedere a che punto sei.

HTH
.

Nothing can be born from hartred

Stefano (SM15455) Mostarda
http://blogs.aspitalia.com/SM15455
Rome Italy
54 messaggi dal 15 giugno 2004
imperugo ha scritto:
beh devi effettuare tutte le operazioni in un un'unico colpo altrimenti perdi l'effetto del transaction scope, quindi tutte le operazioni devono essere eseguite all'interno dello stesso contesto transazionale. Poi in ciò che avviene all'interno della tua transazione mostri i messaggi a video.

Un'altra possibile soluzione è realizzare una sessione dove ti tieni in memoria gli oggetti nello stato precedente alla modifica ed effetuare le operazioni una alla volta in asyncrono, poi se una va male ripristini lo stato precedente.

Facendo così non posso visualizzare i messaggi a video realtime.


se speri che il server ti invii una notifica quando ha fatto un'operazione sei fuori strada.
Infatti non ci spero

ogni volta che fai un'operazionela metti in una variabile di sessione e poi usi il controllo timer di ajax per vedere a che punto sei.

Facendo così dovrei gestirmi la "transazione" a mano
Questo è quello che volevo evitare.

Vi ringrazio
Modificato da menoleo il 30 aprile 2007 16.50 -
Ritengo che il flow migliore per realizzare quanto vuoi ottenere, tenendo conto della natura del protocollo http (ajax e' cmq sempre http :-)), sia:
- realizzare n chimate per ogni operazione che vuoi effetture sul db
- usare un flag sul record inserito/modificato tale da settare come temporanea l'operazione oppure usare un tabella di appoggio
- chiamare in cascata le tue procedure mostrando a video gli step successivi e chiamare nel callback di ajax la procedura successiva
- completata la sequenza mostri il pulsante che lancia una transazione per consolidare le predente operazioni ovvero cambiare il flag o muove dalla tabella di appaggio a quella di produzione
54 messaggi dal 15 giugno 2004
Grazie crixo, credo sia il modo più semplice da per gestire il tutto

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.