У меня есть 2 оператора SQL linq 2, которые я хотел бы участвовать в транзакции (сервер SQL является удаленным, вне брандмауэров и т. Д.), Все другие коммуникации работают, но когда я обертываю эти 2 оператора в TransactionScope (), мне приходится настроить MSDTC, что мы и сделали, но есть проблемы с брандмауэром (я думаю), есть ли более простой способ?
основы того, что я хочу сделать, сводятся к следующему: (оба хранятся под капотом)
using (var transactionScope = new TransactionScope())
{
Repository.DataContext.SubmitChanges();
Repository.DataContext.spDoFinalStuff(tempID, ref finalId);
transactionScope.Complete();
}
Какой самый простой способ добиться этого?
EDIT:
Сначала я получил это: Менеджер транзакций отключил поддержку удаленных / сетевых транзакций. (Исключение из HRESULT: 0x8004D024)
На наших серверах я следовал инструкциям здесь , чтобы исправить это. Однако инструкции, похоже, не относятся к Windows 7 (мой блок разработчика), см. Мой комментарий к ответу выше.
после исправления проблемы (на блоках, не относящихся к win7), я получаю следующее: транзакция уже была явно или неявно зафиксирована или прервана (исключение из HRESULT: 0x8004D00E), которую, как предположил , предположил , может быть проблема брандмауэра .
EDIT
Я только что обнаружил, что удаленная БД - это SQL 2000