Solo me pregunto, si quiero crear una clase que haga algo y quiero ser utilizada en un TransactionScope, ¿qué debería implementar?¿Cómo crear una clase que funcione con TransactionScope?
Esto es: mi clase debe tener en cuenta que está en una transacción, pero ¿cómo se notificaría en Commit o Rollback? Y en Rollback, ¿cómo sería realmente Rollback?
Supongo que mi clase tendría métodos como "Agregar", "Actualizar" y "Eliminar" que solo modifican una lista temporal de cambios, y un método "Leer" que necesita detectar si está en una transacción y devolver datos modificados o no modificados en consecuencia, pero luego necesito un método Commit/Rollback que se llama de alguna manera?
¿Me suscribiría al evento Transaction.TransactionCompleted? En caso afirmativo, ¿cómo evito las suscripciones múltiples a la misma transacción?
Me di cuenta de que las transacciones no tienen ID, ¿hay alguna forma de gestionar/hacer malabares con múltiples transacciones concurrentes o transacciones anidadas? El MSDN Documentation for System.Transactions tiene mucho contenido pero parece estar dirigido a los consumidores en lugar de a los implementadores, entonces me pregunto si alguien tiene una buena fuente (ya sea en la web o en un libro) sobre cómo un servicio proporcionar soporte para las transacciones?
Supongamos que mi clase no tiene una tienda subyacente que ya admita transacciones y solo pueda "pasarla". Supongamos mi clase es el siguiente:
public class MyClass {
private List<MyObject> _businessData;
public void Create(Myobject data) { ... }
public MyObject Read(string query) { ... }
public void Update(Myobject data) { ... }
public void Delete(Myobject data) { ... }
}
Y si alguien se preguntaba, que era el enlace # 4 googlear "participar en System.Transaction" –
Gracias. El artículo es una buena visión general pero no muy profunda (por ejemplo, ¿cómo sé qué transacción está siendo comprometida en caso de que dan soporte a múltiples transacciones simultáneas). Pero Resource Manager como palabra clave me ayudó a encontrar artículos como http://msdn.microsoft.com/en-us/magazine/cc163688.aspx que llenan los vacíos. –