Nikdy jsem MongoDB nepoužíval; nic o tom neví. Odpovídám pouze z hlediska TransactionScope; takže si nejsem jistý, jestli vám to pomůže.
Přečtěte si prosím Magic Of TransactionScope . IMO, existují tři faktory, které byste měli hledat:
-
Připojení k databázi by mělo být otevřeno uvnitř the
TransactionScope.Nejste si jisti, ale vypadá to, že se můžete zaregistrovat ručně připojení bylo otevřeno mimo rozsah pomocí
connection.EnlistTransaction(Transaction.Current).Při pohledu na váš komentář a úpravu to není problém.
-
Všechny operace by měly běžet ve stejném vlákně.
a
Všechny operace by tedy měly běžet ve stejném vláknu.
-
Hrajte s
TransactionScopeOption(předejte jej konstruktoruTransactionScope) hodnoty podle vašich potřeb.Nejsem si jistý, co váš kód očekává. S těmito hodnotami výčtu si můžete hrát.
Jak jste uvedl v komentáři, používáte async/await .
Pro MongoDB se podívejte, zda toto vám pomůže.