protected override Task RemoveKeyAsync(string cacheKey) { var cacheEntries = _tokenCacheDb.Records.Where(c => c.CacheKey == cacheKey); _tokenCacheDb.Records.RemoveRange(cacheEntries); _tokenCacheDb.SaveChanges(); return(Task.CompletedTask); }
protected override async Task WriteCacheBytesAsync(string cacheKey, byte[] bytes) { if (_cacheDbRecord == null) { _cacheDbRecord = new TokenCacheDbRecord { CacheKey = cacheKey }; } _cacheDbRecord.CacheBits = _dataProtector.Protect(bytes); _cacheDbRecord.LastWrite = DateTime.Now; try { // Update the DB and the lastwrite _tokenCacheDb.Entry(_cacheDbRecord).State = _cacheDbRecord.TokenCacheId == 0 ? EntityState.Added : EntityState.Modified; _tokenCacheDb.SaveChanges(); } catch (DbUpdateConcurrencyException) { // Record already updated on a different thread, so just read the updated record await ReadCacheBytesAsync(cacheKey).ConfigureAwait(false); } }