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,
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.
Tags und Links c# oracle11g transactions oraclecommand