Nigdy nie korzystałem z MongoDB; nic o tym nie wiem. Odpowiadam tylko w zakresie TransactionScope; więc nie jestem pewien, czy to ci pomoże.
Zapoznaj się z Magia TransactionScope . IMO, są trzy czynniki, na które powinieneś zwrócić uwagę:
-
Połączenie z bazą danych powinno być otwarte wewnątrz
TransactionScope.Nie jestem pewien, ale wygląda na to, że możesz ręcznie zarejestrować połączenie otwarte poza zakresem przy użyciu
connection.EnlistTransaction(Transaction.Current).Patrząc na Twój komentarz i edycję, to nie jest problem.
-
Wszystkie operacje powinny działać w tym samym wątku.
i
Tak więc wszystkie operacje powinny działać w tym samym wątku.
-
Graj z
TransactionScopeOption(przekaż go do konstruktoraTransactionScope) wartości zgodnie z potrzebami.Nie jestem pewien, czego oczekiwał twój kod. Możesz grać z tymi wartościami wyliczenia.
Jak wspomniałeś w komentarzu, używasz async/await .
W przypadku MongoDB sprawdź, czy to pomaga.