9

Guardando in esso ho verificato che ad esempio il valore o "myInt" non è rolledback nel seguente scenariocosa fa un TransactionScope davvero fare

int myInt = 10; 
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew)) 
{ 
    myInt=20; 
    Transaction t = Transaction.Current; 

    t.Rollback(); 
} 

Quindi mi ha fatto pensare "Esiste una TransactionScope rollback solo attività connesse al database? O ci sono altre cose che la Transazione può gestire e io non sono a conoscenza di quelli? "

risposta

19

La transazione corrente riguarda solo oggetti specifici, denominati Gestori risorse. Questi oggetti devono implementare interfacce specifiche per partecipare alla transazione. L'oggetto SqlConnection ADO.NET è un esempio. Non è difficile creare un oggetto che funzioni come "memoria transazionale". Questi oggetti sono chiamati Volatile Resource Managers. Un semplice esempio è here.

+0

Un altro esempio: http://msdn.microsoft.com/en-gb/magazine/cc163688.aspx – Peter

+0

+1 per una risposta eccellente –

-3

TransactionScope (e Transazioni) vengono utilizzati solo per la gestione di query di database. Non avrebbe davvero senso i cambiamenti di "rollback" che vengono mantenuti solo temporaneamente temporaneamente (come la variabile int).

+0

-1 quello che hai detto non ha senso ... e se salvassi questo valore in un file di testo? sarebbe un rollback allora? – Leonardo

+0

No, intendevo i dati non persistenti. Un FileWriter avrebbe il proprio meccanismo per il "rollback" delle modifiche, non è ancora possibile utilizzare TransactionScope. – crazylpfan