MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Modello di repository con MongoDB:più unità di lavoro con una transazione

Non ho mai usato MongoDB; non ne so nulla. Rispondo solo in termini di TransactionScope; quindi non sono sicuro che questo ti aiuterà.

Fare riferimento a Magic Of TransactionScope . IMO, ci sono tre fattori che dovresti cercare:

  1. La connessione al database deve essere aperta all'interno il TransactionScope .

    Non sono sicuro, ma sembra che tu possa arruolarti manualmente la connessione aperta al di fuori dell'ambito utilizzando connection.EnlistTransaction(Transaction.Current) .

    Guardando il tuo commento e la modifica, questo non è un problema.

  2. Tutte le operazioni dovrebbero essere eseguite sullo stesso thread.

    e

    Quindi, tutte le operazioni dovrebbero essere eseguite sullo stesso thread.

  3. Gioca con TransactionScopeOption (passalo al costruttore di TransactionScope ) valori secondo le tue necessità.

    Non sono sicuro di cosa si aspettasse di fare il tuo codice. Puoi giocare con questi valori enum.

Come hai menzionato nel commento, stai usando async/await .

Per MongoDB, controlla se questo ti aiuta.