public virtual bool AddSnapshot(ISnapshot snapshot) { if (snapshot == null) { return(false); } Logger.Debug(Messages.AddingSnapshot, snapshot.StreamId, snapshot.StreamRevision, snapshot.BucketId); try { return(TryRaven(() => { using (TransactionScope scope = OpenCommandScope()) using (IDocumentSession session = _store.OpenSession()) { RavenSnapshot ravenSnapshot = snapshot.ToRavenSnapshot(_serializer); session.Store(ravenSnapshot); session.SaveChanges(); scope.Complete(); } SaveStreamHead(snapshot.ToRavenStreamHead()); return true; })); } catch (Raven.Abstractions.Exceptions.ConcurrencyException) { return(false); } }