2010-01-07 29 views
8

En primer lugar, esto no será una publicación sobre Transacciones de base de datos. Quiero saber más sobre el TransactionModel en .NET 2.0 y superior. Desde que estoy desarrollando contra .NET 3.5, se aprueban los modelos más nuevos.Transacciones en C#

Ahora, lo que me gustaría acheive es algo como lo siguiente

public void Withdraw(double amount) 
    { 
     using (TransactionScope scope = new TransactionScope()) 
     { 
      Money -= amount; 

      if (Money > 0) 
       scope.Complete(); 
     } 
    } 

lo que significaría que cuando el dinero es menor que 0, todo dentro de la TransactionScope debe ser retrotraído, sin embargo, no lo es.

Una prueba simple como seguido

 ImportantObject obj = new ImportantObject(1); 

     Console.WriteLine(obj.Money); 

     obj.Withdraw(101); 

     Console.WriteLine(obj.Money); 

A condición de que la cantidad de dinero es Stadard 100.

¿Me he perdido algo aquí o se trata no cómo las transacciones deben trabajar? ¿Y cuáles son las pérdidas de rendimiento con este modelo?

Respuesta

6

Creo que está confundido con lo que TransactionScope está diseñado para hacer. TransactionScope está diseñado para confirmar o deshacer cambios en la base de datos a la que está conectado. No revierte los cambios a los objetos en el código. No revertirá el valor contenido en 'Dinero'.

Randy