private void Save(IEnumerable <string> channels)
 {
     _tc?.Save();
     foreach (var sideEffectSaver in _mx.GetSavers(channels))
     {
         sideEffectSaver.SaveInternal();
     }
 }
        private void Save(IEnumerable <string> channels)
        {
            _tc?.Save();
            var trans = _transactionManager.GetSaveTransactions(channels, false);
            List <Exception> aggregate = new List <Exception>();

            try
            {
                foreach (var sideEffectSaver in _mx.GetSavers(channels))
                {
                    sideEffectSaver.SaveInternal();
                    trans[sideEffectSaver.Channel.FullName].Commit();
                }
            }
            catch (Exception e)
            {
                aggregate.Add(e);
            }
            finally
            {
                foreach (var channelTransaction in trans)
                {
                    try
                    {
                        channelTransaction.Value.Dispose();
                    }
                    catch (Exception e)
                    {
                        aggregate.Add(e);
                    }
                }
            }
            if (aggregate.Count > 0)
            {
                throw new AggregateException(aggregate);
            }
        }