public async Task SaveSnapShot <T>(SnapShotWrapper <T> snapShot)
        {
            var mongoCollection = _context.GetCollection <SnapShotDbo <T> >(_snapShotCollectionName);

            var findOneAndReplaceOptions = new FindOneAndReplaceOptions <SnapShotDbo <T> >();

            findOneAndReplaceOptions.IsUpsert = true;
            await mongoCollection.FindOneAndReplaceAsync(
                (Expression <Func <SnapShotDbo <T>, bool> >)(e => e.Id == snapShot.Id),
                new SnapShotDbo <T>
            {
                Id      = snapShot.Id,
                Version = snapShot.Version,
                Payload = snapShot.Entity
            }, findOneAndReplaceOptions);
        }
 public Task SaveSnapShot <T>(SnapShotWrapper <T> snapShot)
 {
     _snapShots[snapShot.Id] = snapShot;
     return(Task.CompletedTask);
 }