/// <summary>
        /// Adds a ForeignResourceCache object with the given foreign resource id, resource id, and
        /// resource type id.
        /// </summary>
        /// <param name="foreignResourceId">The foreign resource id.</param>
        /// <param name="resourceId">The resource id.</param>
        /// <param name="resourceTypeId">The resource type id.</param>
        /// <returns>The cache item added.</returns>
        public ForeignResourceCache Add(int foreignResourceId, int resourceId, int resourceTypeId, int?parentForeignResourceId, int?parentResourceId, int?parentResourceTypeId)
        {
            var cache     = new ForeignResourceCache(foreignResourceId, resourceId, resourceTypeId, parentForeignResourceId, parentResourceId, parentResourceTypeId);
            var cacheItem = Add(cache);

            return(cache);
        }
        /// <summary>
        /// The resource cache item to add.
        /// </summary>
        /// <param name="resourceCache">The resource cache item to add.</param>
        /// <returns>The cacheitem.</returns>
        public CacheItem Add(ForeignResourceCache resourceCache)
        {
            var cacheItem = new CacheItem(GetKey(resourceCache), resourceCache);

            cache.Set(cacheItem, GetCacheItemPolicy());
            return(cacheItem);
        }
 /// <summary>
 /// Returns the cache key for the given resource.
 /// </summary>
 /// <param name="resourceCache">The resource cache object.</param>
 /// <returns>The key.</returns>
 public string GetKey(ForeignResourceCache resourceCache)
 {
     Contract.Requires(resourceCache != null, "The resource cache must not be null.");
     return(GetKey(resourceCache.ForeignResourceId, resourceCache.ResourceTypeId));
 }