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

Transazione MongoDB

Non puoi.
L'unico modo per farlo sarebbe avvolgere someotherRelationaldb.Save(object); in un tentativo di cattura, e alla fine, esegui mongoCollection.Remove

Probabilmente avresti bisogno di una proprietà identificatore nota su object e potrebbe quindi fare qualcosa del tipo:

mongoCollection.Remove(Query.EQ("_id", object.Id));

Quindi, piuttosto disordinato, il tuo metodo di salvataggio sarebbe simile a:

private void Save(object)
{
   mongoCollection.Save(object);

   try
   {
      someotherRelationaldb.Save(object);
   }
   catch
   {
      mongoCollection.Remove(Query.EQ("_id", object.Id));
   }
}

Un altro modo è memorizzare una proprietà flag sull'object che viene aggiornato dopo la scrittura riuscita su someOtherRelationaldb

Neanche questo è esattamente l'ideale, ma puoi modificare la tua query per restituire solo documenti in cui IsPersisted flag è vero.

Nessuno di questi approcci funzionerà bene in un ambiente fortemente frammentato, anche se non credo.