head.WriteLine()

Montag, März 15, 2010

TT.DOM: Transaktionen

Wie hier bereit beschrieben, stellt TT.DOM Unterstützung für Undo/Redo-Transaktionen bereit. Darüber hinaus können DataObject-Ableitungen auch an lokalen oder verteilten Transaktionen teilnehmen – ohne dass Sie dafür etwas tun müssen!
Hierfür setzt TT.DOM auf der Funktionalität von System.Transactions auf. So implementiert z.B. die Basisklasse DataObject das Interface IEnlistmentNotification (Prepare, Commit, Rollback, …). Zudem wird sowohl das implizite, als auch das explizite Programmiermodell von System.Transactions unterstützt.
Beispiel für das explizite Enlistment:
Person p = new Person
  { FirstName = "Jörg", LastName = "Neumann" };
CommittableTransaction tran =
  new CommittableTransaction();
tran.EnlistVolatile(p);
p.FirstName = "Joerg";
tran.Commit();

Beispiel für das implizite Enlistment:
Person p = new Person
  { FirstName = "Jörg", LastName = "Neumann" };
using (TransactionScope tx = new TransactionScope())
{
  p.FirstName = "Joerg";
  tx.Complete();
}

Das Ganze kann natürlich auch für auf Listenebene vollzogen und mit anderen transaktionsfähigen Objekten kombiniert werden.

Labels: