/// <summary> /// Recupera um item a partir do cache, se existir. Caso não exista, cria um mecanismo para recuperação do /// dado a partir do banco e depois atualiza o cache. /// </summary> protected Lazy <T> ObterUsandoCache <T, ID>(CacheMemoria <T, ID> cache, ID id, Func <T> recuperarDoBanco, bool forcarAtualizacao = false) where T : class, new() { T itemCache = RecuperarDoCache(cache, id, forcarAtualizacao); if (itemCache != null) { return(new Lazy <T>(() => itemCache)); } return(new Lazy <T>(() => { itemCache = RecuperarDoCache(cache, id, forcarAtualizacao); if (itemCache == null) { try { itemCache = recuperarDoBanco() ?? new T(); } catch { itemCache = new T(); } cache.AtualizarItemNoCache(itemCache, id); } return itemCache; })); }
private static ConversorValoresDtoModelo <T, U> ObterConversor <U>(Expression <Func <T, U> > campoDto) { var id = $"{typeof(T).FullName}-{typeof(U).FullName}-{campoDto.ToString()}"; var conversorCache = CACHE_CONVERSORES.RecuperarDoCache(id); if (conversorCache == null) { conversorCache = new ConversorValoresDtoModelo <T, U>(campoDto); CACHE_CONVERSORES.AtualizarItemNoCache(conversorCache, id); } return((ConversorValoresDtoModelo <T, U>)conversorCache); }
private static Data.Model.Orcamento ObterOrcamento(uint idOrcamento) { string idCache = string.Format( "{0}-{1}", UserInfo.GetUserInfo.CodUser, idOrcamento ); var orcamento = cacheOrcamentos.RecuperarDoCache(idCache); if (orcamento == null) { orcamento = OrcamentoDAO.Instance.GetElementByPrimaryKey(idOrcamento); cacheOrcamentos.AtualizarItemNoCache(orcamento, idCache); } return(orcamento); }