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); }
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); })); }