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.