2010-11-26 4 views
0

So behandeln Sie Transaktionen innerhalb eines Bereichs mithilfe der Enterprise-Bibliothek. Ich habe 3 gespeicherte Prozeduren, die ich in einem einzigen Bereich ausführen muss. Ich möchte System.Transaction-Namespace nicht verwendenTransaktion in der Enterprise-Bibliothek

+1

OK die Frage muss gestellt werden ... * Warum * willst du nicht den 'System.Transactions' Namespace benutzen? –

Antwort

0

Sie können die BeginTransaction-Methode für ein Verbindungsobjekt aufrufen, um ein DbTransaction-Objekt abzurufen. Verwenden Sie dann die Überladungen des Entlib Database-Objekts, die eine DbTransaction übernehmen. Es ist jedoch ein riesiger Schmerz zu bewältigen. Sie müssen mindestens eine Verbindung manuell erstellen und schließen, anstatt sich auf Entlib verlassen zu müssen, um das Richtige zu tun, und Sie müssen das DbTransaction-Objekt an alles weitergeben, das es benötigt.

TransactionScope ist wirklich die richtige Antwort hier. Wenn Sie ein Blockierungsszenario haben, das Sie daran hindert, es zu verwenden, das keine hirntoten Unternehmenspolitik ist, würde ich gerne wissen, was es ist.

+0

Nur an eine Alternative gedacht. Wenn es immer diese drei Sprocs in derselben Reihenfolge sind, erstellen Sie einfach einen dritten Sproc, der sie in der richtigen Reihenfolge für Sie aufruft und dann die Transaktion vollständig innerhalb des Datenbankservers verwaltet. der neue Sproc würde tun "Begin Trans Exec Sproc1 Exec Sproc Exec Sproc3 Commit Trans" oder so ähnlich (meine SQL ist nicht toll). –