Rollback

venerdì 18 gennaio 2013 - 10.06
Tag Elenco Tags  C#  |  .NET 4.0

svipla Profilo | Senior Member

Ciao a tutti
sto utilizzando per la prima volta sql server in progetto e vorrei capire come utilizzare il rollback.

Supponiamo che io abbiamo questo codice:
bool result = DataBanker.SalvaCliente(cliente);
if (result)
{
result = Users.CreateUser(user, out userId);
}
if (result)
{
}
else
{
//Roolback
}

Ho trovato un esempio su msdn e ho capito più o meno come scrivere il codice.
Se l'errore si verifica in DataBanker.SalvaCliente(cliente) mi è facile eseguire il Rollback sulla tabella 'Clienti'. Se invece l'errore si verifica su Users.CreateUser che coinvolge tutte le tabelle utilizzate dal provider Membership di asp.net, oltre ad eseguire il Rollback su queste tabelle, dovrei eseguire il rollback anche della tabella 'Clienti'. E' possibile fare questo? E come?

Grazie mille

alx_81 Profilo | Guru

>Ciao a tutti
ciao

>Se l'errore si verifica in DataBanker.SalvaCliente(cliente) mi
>è facile eseguire il Rollback sulla tabella 'Clienti'. Se invece
>l'errore si verifica su Users.CreateUser che coinvolge tutte
>le tabelle utilizzate dal provider Membership di asp.net, oltre
>ad eseguire il Rollback su queste tabelle, dovrei eseguire il
>rollback anche della tabella 'Clienti'. E' possibile fare questo?
>E come?
devi fare in modo che la transazione che vai a fare comprenda entrambe le operazioni.
io utilizzerei il transactionscope:
http://msdn.microsoft.com/it-it/library/system.transactions.transactionscope(v=vs.100).aspx
con esso puoi rendere unica l'operazione di più statement, per fare in modo di applicare il "tutto o niente".
In questo puoi fare in modo che ogni errore faccia rollback delle eventuali modifiche precedenti non ancora "committate".

>Grazie mille
di nulla!
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
http://mvp.microsoft.com/profiles/Alessandro.Alpi
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5