public void Update(ILearningRoom learningRoom)
        {
            _roomPersistor.Update(learningRoom);

            var participantCodesExist = _learningRoomGateway.Load(learningRoom.Reference).Participants.Select(p => p.Reference.Code);

            var participantsToAdd    = learningRoom.Participants.Where(p => !participantCodesExist.Contains(p.Reference.Code)).ToList();
            var participantsToUpdate = learningRoom.Participants.Where(p => participantCodesExist.Contains(p.Reference.Code)).ToList();

            participantsToUpdate.ForEach(p => _participantPersistor.Update(p));
            participantsToAdd.ForEach(p => _participantPersistor.Add(p));

            _persistence.Complete();
            _memoryCache.Remove(learningRoom.Reference.CacheCode);
        }
 public void Add(ILearningRoom learningRoom)
 {
     _roomPersistor.Add(learningRoom);
     learningRoom.Participants.ToList().ForEach(p => _participantPersistor.Add(p));
     _persistence.Complete();
 }