MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Padrão de repositório com MongoDB - várias unidades de trabalho com uma transação


Eu nunca usei o MongoDB; não sei nada sobre isso. Estou respondendo apenas em termos de TransactionScope; então não tenho certeza se isso vai te ajudar.

Consulte o Magic Of TransactionScope . IMO, há três fatores que você deve procurar:

  1. A conexão com o banco de dados deve ser aberta dentro o TransactionScope .

    Não tenho certeza, mas parece que você pode inscrever-se manualmente a conexão foi aberta fora do escopo usando connection.EnlistTransaction(Transaction.Current) .

    Olhando para o seu comentário e a edição, isso não é um problema.

  2. Todas as operações devem ser executadas no mesmo thread.

    e

    Portanto, todas as operações devem ser executadas no mesmo thread.

  3. Jogue com TransactionScopeOption (passar para o construtor de TransactionScope ) valores conforme sua necessidade.

    Não tenho certeza do que seu código esperava fazer. Você pode brincar com esses valores enum.

Como você mencionou no comentário, você está usando async/await .

Para MongoDB, veja se isto te ajuda.