TransactionScope



  • Hallo.

    Kann mir jemand kurz erklären für was man die TransactionScope Klasse benötigt.
    Ja ich weiß für Transactionen. Und ja ich habe auch schon danach gesucht. Doch leider verstehe ich es nicht ganz. Bzw. ich habe da noch ein paar ungeklärte Fragen

    Frage 1: Ist das nur gedacht für Transaktionen mit Datenbanken?
    Frage 2: Funktioniert das auch mit EntityFramework.
    Frage 3: Wird da beim Dispose von TransactionScope einfach ein Rollback meiner letzten Transaktion gemacht.

    Mein Hintergrund ist der:

    Ich übertrage Daten an ein Externes Gerät. Wenn die Daten erfolgreich übertragen wurden "merke" ich mir die Daten in einer DB über EF.

    Wenn ich nun ein Fehler passiert beim Übertragen an das Gerät sollen diese dann auch nicht in die Datenbank eingetragen werden.
    Aber andersrum halt genau so.

    Rückgängig machen der Transaktion in die DB geht ja noch. Das übertragen der Daten an das externe Gerät nicht.

    Sprich ich müsste eigentlich zuerst in die DB schreiben. Dann an das externe Gerät.

    Macht hier Transactionscope Sinn?



  • Ich kann dir die TransactionScope-Klasse nicht in allen Einzelheiten erklären, betreffen tut sie aber weit mehr als nur Datenbanken (und sollte auch mit dem EntityFramework arbeiten), z.B. Registry, je nach Konfiguration WCF-Services etc.



  • Eine Transaktion ist ein abstraktes Konzept und nicht auf Datenbanken beschränkt. Du könntest eigene transaktionale Klassen schreiben. Ich weiß leider nicht mehr, wie das in .NET funktioniert hat. Hier hab ich was gefunden, was mir vage bekannt vorkommt:

    http://www.developer.com/net/net/article.php/3565196/SystemTransactions-Implement-Your-Own-Resource-Manager.htm

    Auf jeden Fall könntest du das auf die Weise lösen. Das wäre aber nur die interne API, wie du Änderungen an deinem Device rückgängig machst, musst du natürlich selber wissen. Was aber schon mal gehen würde, ein TransactionScope kapselt die Datenbanktransaktion und den Zugriff auf dein Device, und wenn beim zweiten Schritt etwas schiefgeht, kann der Rollback vom TransactionScope zumindest die Datenbanktransaktion rückgängig machen.


Anmelden zum Antworten