public void Delete(TModel model)
        {
            var models = (IList <TModel>)_database.Database[typeof(TModel)];

            if (model != null)
            {
                var deletedModel = Search(m => m.Id == model.Id);
                if (models.Remove(deletedModel))
                {
                    _logger.Log(DataMessage.Delete(model));
                }
                _database.SaveData <TModel>();
                _cache.ThredSafeWorkWithCache(_cache.RemoveFromCache, model);
            }
        }
        public void Update(TModel newModel)
        {
            var models = (IList <TModel>)_database.Database[typeof(TModel)];

            if (newModel != null)
            {
                var updatedModel = Search(m => m.Id == newModel.Id);
                var index        = models.IndexOf(updatedModel);
                if (index > -1)
                {
                    models.RemoveAt(index);
                    models.Insert(index, newModel);
                    _logger.Log(DataMessage.Update(updatedModel, newModel));
                    _database.SaveData <TModel>();
                    _cache.ThredSafeWorkWithCache(_cache.SetToCache, newModel);
                }
            }
        }