У меня есть процесс, который требует откат всех обновлений и вставок в случае ошибки на любом этапе.Поэтому я хотел использовать класс TransactionScope для достижения этой цели.Вот мой код:
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required))
{
IWE dbContext1 = null;
using (dbContext1 = new IWE())
{
dbContext1.Connection.Open();
//make some changes using the dbContext1
//Save Changes but don't discard yet
dbContext1.SaveChanges(false);
//make a call to another database
using (EPE context = new EPE())
{
//add or makes some changes
context.SaveChanges(false);
}
}
//if there were no problems above committ the transaction
if (success)
{
////if we get here things are looking good.
scope.Complete();
//accept the changes above against these connections.
dbContext1.AcceptAllChanges();
}
}
Проблема в том, что как только я звоню на второе соединение, я получаю сообщение об ошибке:
"Доступ к сети для диспетчера распределенных транзакций (MSDTC) отключен. Включите DTC для доступа к сети в конфигурации безопасности для MSDTC с помощью инструмента администрирования служб компонентов. "
Я проверил, чтобы MSDTC был включен на обоих серверах.Или, по крайней мере, так кажется.
Другая информация: - Между ними нет брандмауэра.
- Первый сервер БД работает под управлением Windows Server 2003 R2 w / sql 2005 - Второй сервер БД работает под управлением Windows Server 2003 w / sql 2000
Может ли кто-нибудь указать мне правильное направление, используя область транзакции без или с использованием распределенных транзакций?
Заранее спасибо, Билли