Распределенные транзакции в приложении Asp.net

У нас есть корпоративное приложение, в котором мы выполняем вызов к базе данных 1, обращаемся к веб-службе, а затем к базе данных 2, все в одной последовательности событий. Мы хотели бы включить всю обработку в транзакцию. Каков наилучший способ реализации распределенной транзакции в этом сценарии?

Среда: SQL 2008, ASP.Net 3.5

1 ответ

Решение

Использовать TransactionScope объект и разные соединения (по одному на каждую базу данных). Транзакция автоматически переходит в распределенную.

Из примера на странице MSDN:

    using (TransactionScope scope = new TransactionScope())
    {
        using (SqlConnection connection1 = new SqlConnection(connectString1))
        {
            // Opening the connection automatically enlists it in the 
            // TransactionScope as a lightweight transaction.
            connection1.Open();

            using (SqlConnection connection2 = new SqlConnection(connectString2))
            {
                // The transaction is escalated to a full distributed
                // transaction when connection2 is opened.
                connection2.Open();
            }
        }

        scope.Complete();
    }
Другие вопросы по тегам