Распределенные транзакции в приложении Asp.net - PullRequest
0 голосов
/ 25 февраля 2011

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

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

1 Ответ

2 голосов
/ 25 февраля 2011

Используйте объект 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();
    }
...