コード例 #1
0
        public async Task <ICollection <TEntity> > Execute(CloudTable model)
        {
            var cacheKey = GenerateCacheKey(model);

            if (Debugger.IsAttached)
            {
                Trace.WriteLine(string.Format(CultureInfo.InvariantCulture,
                                              "{0} Cache Key: {1}",
                                              Environment.NewLine,
                                              cacheKey));
            }

            if (Cache.Contains(cacheKey))
            {
                if (Debugger.IsAttached)
                {
                    Trace.WriteLine("Got query result from cache");
                }

                return((ICollection <TEntity>)Cache.Get(cacheKey));
            }

            if (Debugger.IsAttached)
            {
                Trace.WriteLine("Got query result from table storage");
            }

            var entities = await query.Execute(model).ConfigureAwait(false);

            Cache.Add(new CacheItem(cacheKey, entities), cacheItemPolicy);

            return(entities);
        }
コード例 #2
0
        Execute <TEntity>(ICloudTableQuery <TEntity> query)
            where TEntity : ITableEntity, new()
        {
            if (query == null)
            {
                throw new ArgumentNullException("query");
            }

            return(await Task.Run(() =>
            {
                if (cachePolicy == null)
                {
                    return query.Execute(tableReference);
                }

                var cached = new CloudTableQueryCache <TEntity>(query,
                                                                cachePolicy,
                                                                cacheHint);
                return cached.Execute(tableReference);
            }));
        }