Das geht nicht.
Die einzige Möglichkeit wäre, someotherRelationaldb.Save(object);
zu umschließen in einem Versuch catch, und auf dem catch, führen Sie mongoCollection.Remove
aus
Wahrscheinlich benötigen Sie eine bekannte Kennungseigenschaft für object
und könnte dann so etwas tun:
mongoCollection.Remove(Query.EQ("_id", object.Id));
Ziemlich unordentlich würde Ihre Save-Methode also etwa so aussehen:
private void Save(object)
{
mongoCollection.Save(object);
try
{
someotherRelationaldb.Save(object);
}
catch
{
mongoCollection.Remove(Query.EQ("_id", object.Id));
}
}
Eine andere Möglichkeit besteht darin, eine Flag-Eigenschaft im object
zu speichern das wird nach aktualisiert das erfolgreiche Schreiben in someOtherRelationaldb
Dies ist auch nicht gerade ideal, aber Sie könnten Ihre Abfrage so ändern, dass nur Dokumente zurückgegeben werden, bei denen IsPersisted
ist Flag ist wahr.
Keiner dieser Ansätze wird in einer stark fragmentierten Umgebung gut funktionieren, obwohl ich nicht glauben würde.