2010-11-08 3 views
2

В моем приложении у меня есть следующий шаблон:.net область транзакции блок вторая транзакция

using (TransactionScope transaction = new TransactionScope(TransactionScopeOption.Required)) 
{ 
    Function1(); 
    Function2(); 
    Function3(); 
} 

Мой problen является то, что Function2 вызывает другую функцию, которая подключается к другой БД ... и сделка становится распределенным и я получаю исключение.

Есть ли способ в коде, в котором я могу сделать вызов db, который не является частью текущей транзакции? Мой код в Function2 делает только чтение ... поэтому я не хочу быть частью текущей транзакции.

Спасибо, Radu

ответ

3

Вокруг function2 вы можете создать новую транзакцию с TransactionScopeOption.RequiresNew, тем самым заставляя его в свою собственную отдельную операцию. Поскольку в этой транзакции будет использоваться только один ресурс (другая база данных), он не должен распространяться.

+0

, и если я создам вторую область транзакций как TransactionScope.Suppress Я потерял родительскую транзакцию? –

+0

@RaduD Только в рамках области транзакции я ожидаю (но я бы хотел проверить, чтобы это подтвердить). – Richard

Смежные вопросы