Dodawanie zakresu transakcji do równoległego

Mam pętlę wstawiającą rekordy do bazy danych (Firebird):

using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options))
{
    taskList.Add(Task.Factory.StartNew(() =>
    {       
        Parallel.ForEach(objectList, c =>
        {
            DoInsert(c, id);
        });
    }));

    scope.Complete()
}

Chciałbym możliwość wycofania tych wstawek jako wsadu, jeśli wkładka się nie powiedzie. Jednak podczas wykonywania wstawiania w pętli Parallel.Foreach zakres transakcji nie jest widoczny. Zakładam, że to dlatego, że pętla działa w innym wątku. Jeśli zrobię to jako wstawka szeregowa przy użyciu TransactionScope, wszystko działa.

Próbowałem użyć DependentTransaction, ale nie mogę uzyskać kontekstu do funkcji DoInsert. DoInsert po prostu otwiera połączenie i zapisuje zawartość C do bazy danych.

Jakieś pomysły?

Dzięki,

questionAnswers(1)

yourAnswerToTheQuestion