MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Transaction MongoDB

Vous ne pouvez pas.
La seule façon de faire cela serait d'envelopper someotherRelationaldb.Save(object); dans un try catch, et sur le catch, faites mongoCollection.Remove

Vous auriez probablement besoin d'une propriété d'identifiant connue sur object et pourrait alors faire quelque chose comme :

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

Donc, plutôt désordonné, votre méthode Save ressemblerait un peu à :

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

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

Une autre méthode consiste à stocker une propriété flag sur l'object qui est mis à jour après l'écriture réussie dans someOtherRelationaldb

Ce n'est pas exactement l'idéal non plus, mais vous pouvez modifier votre requête pour ne renvoyer que les documents où IsPersisted l'indicateur est vrai.

Aucune de ces approches ne fonctionnera bien dans un environnement fortement fragmenté, bien que je ne le pense pas.