public void Set(string key, CacheItem cacheItem) {
            var record = _repository.Table.FirstOrDefault(x => x.CacheKey == key);

            if (record == null) {
                record = new CacheItemRecord();
                Convert(cacheItem, record);
                _repository.Create(record);
                return;
            }

            Convert(cacheItem, record);
        }
 private void Convert(CacheItem cacheItem, CacheItemRecord record) {
     record.CacheKey = cacheItem.CacheKey;
     record.CachedOnUtc = cacheItem.CachedOnUtc;
     record.ContentType = cacheItem.ContentType;
     record.InvariantCacheKey = cacheItem.InvariantCacheKey;
     record.Output = cacheItem.Output;
     record.QueryString = cacheItem.QueryString;
     record.StatusCode = cacheItem.StatusCode;
     record.Tags = String.Join(";", cacheItem.Tags);
     record.Tenant = cacheItem.Tenant;
     record.Url = cacheItem.Url;
     record.ValidUntilUtc = cacheItem.ValidUntilUtc;
 }
        private CacheItem Convert(CacheItemRecord record) {
            var cacheItem = new CacheItem();

            cacheItem.CacheKey = record.CacheKey;
            cacheItem.CachedOnUtc = record.CachedOnUtc;
            cacheItem.ContentType = record.ContentType;
            cacheItem.InvariantCacheKey = record.InvariantCacheKey;
            cacheItem.Output = record.Output;
            cacheItem.QueryString = record.QueryString;
            cacheItem.StatusCode = record.StatusCode;
            cacheItem.Tags = record.Tags.Split(';');
            cacheItem.Tenant = record.Tenant;
            cacheItem.Url = record.Url;
            cacheItem.ValidUntilUtc = record.ValidUntilUtc;

            return cacheItem;
        }