private static BlockCache CopyModel(Rock.Model.Block blockModel) { BlockCache block = new BlockCache(blockModel); block.AttributeValues = blockModel.AttributeValues; block.AttributeIds = new List <int>(); if (blockModel.Attributes != null) { foreach (var attribute in blockModel.Attributes) { block.AttributeIds.Add(attribute.Value.Id); } } return(block); }
/// <summary> /// Adds Block model to cache, and returns cached object /// </summary> /// <param name="blockModel"></param> /// <returns></returns> public static BlockCache Read(Rock.Model.Block blockModel) { string cacheKey = BlockCache.CacheKey(blockModel.Id); ObjectCache cache = MemoryCache.Default; BlockCache block = cache[cacheKey] as BlockCache; if (block != null) { return(block); } else { block = BlockCache.CopyModel(blockModel); cache.Set(cacheKey, block, new CacheItemPolicy()); return(block); } }
/// <summary> /// Adds Block model to cache, and returns cached object /// </summary> /// <param name="blockModel">The block model.</param> /// <returns></returns> public static BlockCache Read(Block blockModel) { string cacheKey = BlockCache.CacheKey(blockModel.Id); ObjectCache cache = MemoryCache.Default; BlockCache block = cache[cacheKey] as BlockCache; if (block != null) { return(block); } else { block = new BlockCache(blockModel); var cachePolicy = new CacheItemPolicy(); cache.Set(cacheKey, block, cachePolicy); cache.Set(block.Guid.ToString(), block.Id, cachePolicy); return(block); } }
/// <summary> /// Removes block from cache /// </summary> /// <param name="id"></param> public static void Flush(int id) { FlushCache(BlockCache.CacheKey(id)); }
/// <summary> /// Returns Block object from cache. If block does not already exist in cache, it /// will be read and added to cache /// </summary> /// <param name="id">The id.</param> /// <param name="rockContext">The rock context.</param> /// <returns></returns> public static BlockCache Read(int id, RockContext rockContext = null) { return(GetOrAddExisting(BlockCache.CacheKey(id), () => LoadById(id, rockContext))); }
/// <summary> /// Removes block from cache /// </summary> /// <param name="id"></param> public static void Flush(int id) { ObjectCache cache = MemoryCache.Default; cache.Remove(BlockCache.CacheKey(id)); }
/// <summary> /// Adds Block model to cache, and returns cached object /// </summary> /// <param name="blockModel">The block model.</param> /// <returns></returns> public static BlockCache Read(Block blockModel) { return(GetOrAddExisting(BlockCache.CacheKey(blockModel.Id), () => LoadByModel(blockModel))); }