2008-10-12 12 views
22

Ich habe gelesen (oder vielleicht von einem Kollegen gehört), dass in .NET, TransactionScope seine Timeout und dann VoteCommit (im Gegensatz zu VoteRollback) treffen kann. Ist das genau oder Hörensagen? Ich konnte keine Informationen im Internet finden, die über dieses Problem gesprochen haben (wenn es ein Problem ist), also frage ich mich, ob jemand direkte Erfahrungen damit hat und etwas Licht geben kann?TransactionScope Fehler in .NET? Mehr Informationen?

Antwort

25

Wenn Sie in Bezug auf SQL Server bedeuten, dann gibt es ein Problem, das Sie in der Verbindungszeichenfolge beheben können; siehe meine Antwort here oder die vollständigen Details here.

Die kurze Version ist: Stellen Sie sicher, dass Sie Transaction Binding=Explicit Unbind; in der Verbindungszeichenfolge haben.

Es ist nicht tatsächlich eine Abstimmung Commit - die Transaktion (und alle frühen Operationen) hat zurückgerollt, aber alle nachfolgenden Operationen (immer noch innerhalb der TransactionScope) können in der Null-Transaktion, d. H. Auto-Commit durchgeführt werden.

+0

Funktioniert wie ein Charme. Vielen Dank. –

+0

Ist das das gleiche Verhalten für andere Datenbanken wie Informix? –

+1

@just_name es wäre Anbieter abhängig; Ich weiß nicht speziell für informix - Sie müssten ihre Dokumentation konsultieren –

27

Das von Marc Gravell beschriebene Verhalten wurde in .NET 4.0 geändert. Anstatt die Operation autocommitted, wird jetzt eine InvalidOperationException ausgelöst. In 4.0 müssen Sie also nicht länger Explicit Unbind verwenden.

Verwandte Themen