Пример #1
0
        public IList <TModel> GetAllInRange <TModel>(object startingWith, object endingWith,
                                                     Func <object, object, IList <TModel> > retrieve)
        {
            var listCacheKey = _keyBuilder.GetRangeKey <TModel>(startingWith, endingWith);
            var result       = _cache.Get <IList <TModel> >(listCacheKey);

            if (result == null)
            {
                result = retrieve(startingWith, endingWith);
                _cache.Store(listCacheKey, result);
                result.ForEach(x =>
                {
                    var cacheKey    = _keyBuilder.GetKey <TModel>(x.GetDocumentId());
                    var cacheRevKey = _keyBuilder.GetKey <TModel>(x.GetDocumentId(),
                                                                  x.GetDocumentRevision());
                    AddCrossReference(cacheKey, listCacheKey);
                    AddCrossReference(cacheRevKey, listCacheKey);
                });
            }
            return(result);
        }