Выполнение транзакции Oracle с использованием C # и ODP.NET

Я не совсем понимаю. На первый взгляд выполнение транзакции в C # кажется простым. Отсюда:

http://docs.oracle.com/cd/B19306_01/win.102/b14307/OracleTransactionClass.htm

string constr = "User Id=scott;Password=tiger;Data Source=oracle";
OracleConnection con = new OracleConnection(constr);
con.Open();

OracleCommand cmd = con.CreateCommand();
cmd.CommandText = "SELECT COUNT(*) FROM MyTable";

// Start a transaction
OracleTransaction txn = con.BeginTransaction(
  IsolationLevel.ReadCommitted);

try
{
  // Insert the same row twice into MyTable
  cmd.CommandText = "INSERT INTO MyTable VALUES (1)";
  cmd.ExecuteNonQuery();
  cmd.ExecuteNonQuery(); // This may throw an exception
  txn.Commit();
}....

Итак, создайте соединение, начните транзакцию с этого соединения, а затем продолжайте, пока вы не захотите зафиксировать или откатить.

Тем не менее, другие источники, такие как здесь:

https://forums.oracle.com/thread/319121

выступают за установку свойства Transaction самого объекта OracleCommand. например

cmd.Transaction = txn;

Еще в других источниках говорится, что это свойство доступно только для чтения. Это на самом деле не только для чтения, но нигде не видно ясно, что он делает.

Поэтому я путаюсь с тем, что существование свойства Transaction в объекте OracleCommand, по-видимому, предполагает, что его следует использовать для выполнения этой команды как части транзакции, и, тем не менее, собственная документация Oracle не использует это свойство. Так для чего это нужно?

Итак, мои вопросы:

мне нужно установить свойство Transaction моей OracleCommand, и если да, что именно это делает?Если я начал транзакцию для соединения, все ли последующие команды, выполняемые для этого соединения (до фиксации или отката), являются частью этой транзакции, даже если я не установил свойство Transaction для этих команд?

Ответы на вопрос(1)

Ваш ответ на вопрос