Я тестирую область транзакции приема в фундаменте рабочего процесса 4.5, и я думаю, что с ней что-то не так!Операция Workflow Foundation и транзакция DTC Сбой отката
Смотрите, когда я roolback сделки либо явным roolback:
using (TransactionScope s = new TransactionScope())
{
using (ServiceReference1.ServiceClient cli = new ServiceReference1.ServiceClient())
{
Transaction t = Transaction.Current;
cli.GetData(new ServiceReference1.GetData() { data = 10, ID = id });
t.Rollback();
}
}
или бросая исключение в TransactionScope:
using (TransactionScope s = new TransactionScope())
{
using (ServiceReference1.ServiceClient cli = new ServiceReference1.ServiceClient())
{
cli.GetData(new ServiceReference1.GetData() { data = 10, ID = id });
throw new Exception("Error!");
}
}
Я ожидаю, что рабочий процесс будет rolledback тоже! Другими словами, я ожидаю, что получение «GetData» остается в силе! но этого не происходит. Рабочий процесс выполняется, и GetData больше недействителен!
Есть другие «получает» после «GetData», чтобы гарантировать, что рабочий процесс не будет входить в «заполненное» состоянии ...
Я уверен, что моя сделка течет в рабочий процесс, так как внутри в рабочем процессе у меня есть активность, которая возвращает мне идентификатор транзакции (который, конечно, совпадает с идентификатором приложения)
Может ли кто-нибудь сказать, что происходит? что мне не хватает?
Futher ноты:
Все работает в моей машине (включая резервное хранилище, на Sql Server 2012) DTC включена
, но мой экземпляр сам сохраняется! он появляется, если я запрашиваю базу данных вручную! – Leonardo
Является ли такое же поведение, даже когда AbortInstanceOnTransactionFailure = true? (TransactedReceiveScope) – Sentinel