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

Transação do MongoDB


Você não pode.
A única maneira de fazer isso seria envolver someotherRelationaldb.Save(object); em um try catch, e no catch, faça mongoCollection.Remove

Você provavelmente precisaria de uma propriedade identificadora conhecida em object e poderia então fazer algo como:
mongoCollection.Remove(Query.EQ("_id", object.Id));

Então, um pouco desordenadamente, seu método Save ficaria um pouco parecido com:
private void Save(object)
{
   mongoCollection.Save(object);

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

Outra maneira é armazenar uma propriedade de sinalizador no object que é atualizado depois a gravação bem-sucedida em someOtherRelationaldb

Isso também não é exatamente o ideal, mas você pode modificar sua consulta para retornar apenas documentos em que IsPersisted bandeira é verdadeira.

Nenhuma dessas abordagens funcionará bem em um ambiente fortemente fragmentado, embora eu não pense.