TransactionScope и координатор распределенных транзакций в Oracle - PullRequest
1 голос
/ 24 февраля 2012

Я знаю, как реализовать распределенную транзакцию при выполнении запросов к двум БД MSSQL с использованием DTC и класса TransactionScope. Существуют ли варианты инфраструктуры для Oracle в Windows и Oracle в * nix, которые предоставляют одинаковую службу и будут работать с одним и тем же кодом, E.G.:

        try
        {
            using (var transactionScope = new TransactionScope(TransactionScopeOption.Required))
            using (var connection1 = new SqlConnection("{conectionString1}"))
            using (var connection2 = new SqlConnection("{connectionString2"))
            {
                var command = connection1.CreateCommand();

                command.CommandText = "insert into test values ('TEST') select @@identity";

                connection1.Open();

                var newRowId = command.ExecuteScalar();

                Console.WriteLine("Inserted new row in connection 1 with ID : {0}", newRowId);
                //transaction promoted on second connection open
                connection2.Open();

                command = connection2.CreateCommand();
                command.CommandText = "set identity_insert TEST on";
                command.ExecuteNonQuery();

                command.CommandText = string.Format("insert into test (Id, Text) values ({0},'TEST')", newRowId);
                command.ExecuteNonQuery();

                Console.WriteLine("Inserted new row in connection 2");

                transactionScope.Complete();
            }

            Console.WriteLine("Transaction commited");
        }
        catch (Exception)
        {
            Console.WriteLine("Transaction rolled back");
        }
...