/// <summary> /// Determines whether the specified query can be cached. /// </summary> public virtual bool CanBeCached(DbQueryInfo queryInfo) { // This method is called before database call. // Cache only Persons. // return queryInfo.AffectedEntitySets.All(x => x.Name == "Person"); return(true); }
/// <summary> /// Puts the result to cache. /// </summary> private void PutResultToCache(DbCacheKey key, object result, DbQueryInfo queryInfo) { var expiration = _commandInfo.Policy != null ? _commandInfo.Policy.GetExpirationTimeout(queryInfo) : TimeSpan.MaxValue; _commandInfo.Cache.PutItem(key, result, expiration); }
public void AddSample_QueryInfo_DataObjectsToDatabase() { var qi = new DbQueryInfo(); var savedTime = DateTime.Now; var sampleQuery = "sampleQuery"; qi.SaveToLogDb(new QueryInfo(sampleQuery, savedTime)); using (var db = new AllegroAppContext()) { Assert.IsTrue(db.QueryInfo.Where(x => x.Querry == sampleQuery).Any()); db.QueryInfo.Remove(db.QueryInfo.Where(x => x.Querry == sampleQuery).FirstOrDefault()); db.SaveChanges(); } }
public override DbCachingMode GetCachingMode(DbQueryInfo queryInfo) { return(GetCachingStrategyFunc == null ? base.GetCachingMode(queryInfo) : GetCachingStrategyFunc(queryInfo)); }
public override TimeSpan GetExpirationTimeout(DbQueryInfo queryInfo) { return(GetExpirationTimeoutFunc == null ? base.GetExpirationTimeout(queryInfo) : GetExpirationTimeoutFunc(queryInfo)); }
public override bool CanBeCached(DbQueryInfo queryInfo, int rowCount) { return(CanBeCachedRowsFunc == null || CanBeCachedRowsFunc(queryInfo, rowCount)); }
public override bool CanBeCached(DbQueryInfo queryInfo) { return(CanBeCachedFunc == null || CanBeCachedFunc(queryInfo)); }
/// <summary> /// Gets the caching strategy for a given query. /// </summary> public virtual DbCachingMode GetCachingMode(DbQueryInfo queryInfo) { // Cache with invalidation. return(DbCachingMode.ReadWrite); }
/// <summary> /// Gets the absolute expiration timeout for a given query. /// </summary> public virtual TimeSpan GetExpirationTimeout(DbQueryInfo queryInfo) { // Cache for 5 minutes. return(TimeSpan.FromMinutes(5)); }
/// <summary> /// Determines whether specified number of rows should be cached. /// </summary> public virtual bool CanBeCached(DbQueryInfo queryInfo, int rowCount) { // This method is called after database call. // Cache only queries that return less than 1000 rows. return(rowCount < 1000); }
/// <summary> /// Puts the result to cache. /// </summary> private void PutResultToCache(DbCacheKey key, object result, DbQueryInfo queryInfo) { var expiration = _commandInfo.Policy != null ? _commandInfo.Policy.GetExpirationTimeout(queryInfo) : TimeSpan.MaxValue; _commandInfo.Cache.PutItem(key, result, expiration); }