Пример #1
0
        /// <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;
            }));
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }