sql >> Base de Datos >  >> NoSQL >> MongoDB

Transacción MongoDB

No puede.
La única forma de hacer esto sería envolver someotherRelationaldb.Save(object); en una captura de prueba, y en la captura, haga mongoCollection.Remove

Probablemente necesite una propiedad de identificador conocido en object y luego podría hacer algo como:

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

Entonces, bastante desordenado, su método Guardar se vería un poco como:

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

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

Otra forma es almacenar una propiedad de marca en el object que se actualiza después la escritura exitosa en someOtherRelationaldb

Esto tampoco es exactamente ideal, pero puede modificar su consulta para que solo devuelva documentos donde IsPersisted la bandera es verdadera.

Ninguno de estos enfoques funcionará bien en un entorno muy fragmentado, aunque no lo creo.