Durchführen einer Oracle-Transaktion mit C # und ODP.NET

8

Ich bin verwirrt. Auf den ersten Blick erscheint eine Transaktion in C # einfach. Von hier aus:

Ссылка

%Vor%

Erstellen Sie also eine Verbindung, beginnen Sie eine Transaktion für diese Verbindung, und dann gehen Sie los, bis Sie ein Commit oder Rollback durchführen möchten.

Aber andere Quellen, wie hier:

Ссылка

befürworten das Festlegen der Transaction-Eigenschaft des OracleCommand-Objekts selbst. z.B.

%Vor%

Andere Quellen sagen, dass diese Eigenschaft schreibgeschützt ist. Es wird nicht wirklich gelesen nur, aber nirgends scheint klar zu sagen, was es tut.

Meine Verwirrung ist daher die Existenz der Transaktion Eigenschaft auf dem OracleCommand-Objekt scheint darauf hinzuweisen, dass es sollte verwendet werden, um diesen Befehl als Teil einer Transaktion auszuführen, und noch nicht Oracle-eigene Dokumentation verwendet diese Eigenschaft nicht. Also, was ist es für?

Meine Fragen sind also:

  1. muss ich die Transaction-Eigenschaft meines OracleCommand festlegen, und Wenn ja, was genau macht das?
  2. Wenn ich eine Transaktion für eine Verbindung gestartet habe, sind ALLE nacheinander Befehle, die für diese Verbindung ausgeführt werden (bis zu einem Commit oder Rollback), Teil dieser Transaktion, auch wenn ich die Transaktion nicht einstelle Eigenschaft für diese Befehle?
bornfromanegg 21.09.2013, 09:25
quelle

1 Antwort

14
  

1) muss ich die Transaction-Eigenschaft meines OracleCommand,

setzen

Nein.

  

und wenn ja, was genau macht das?

Es ist ein No-Op.

Die OracleCommand "verwendet" die Transaktion, die momentan im OracleConnection des Befehls aktiv ist, erneut. Die Transaction -Eigenschaft gibt es einfach, weil sie in der Basisklasse deklariert wurde ( DbCommand ) und Sie können ein Element in der geerbten Klasse nicht "deklarieren". Wenn Sie es lesen, erhalten Sie die Transaktion der Verbindung (falls vorhanden) und setzen sie nichts.

  

2) Wenn ich eine Transaktion für eine Verbindung gestartet habe, werden ALLE nachfolgenden Befehle für diese Verbindung (bis zu einem Commit oder Rollback) Teil dieser Transaktion ausgeführt, auch wenn ich die Transaction-Eigenschaft für diese Befehle nicht festlege?

Genau.

    
Branko Dimitrijevic 21.09.2013, 10:30
quelle