示例#1
0
        /// <summary>
        /// Extract the cache invalidation values for the specified key into a serializable structure.
        /// </summary>
        /// <param name="key">The key.</param>
        /// <returns>
        /// A serializable structure containing the values for the specified invalidation key
        /// </returns>
        /// <exception cref="System.ArgumentNullException">key</exception>
        public Lazy <SerializableCacheInvalidationKey <TKey> > ToSerializableKey(TKey key)
        {
            if (Equals(key, null))
            {
                throw new ArgumentNullException("key");
            }

            return(new Lazy <SerializableCacheInvalidationKey <TKey> >(() =>
            {
                var serializableKey = new SerializableCacheInvalidationKey <TKey>(Name, key)
                {
                    EntityToCacheKey = EntityToCacheKey.GetKeys(key),
                    FieldTypeToCacheKey = FieldTypeToCacheKey.GetKeys(key),
                    RelationshipTypeToCacheKey = RelationshipTypeToCacheKey.GetKeys(key),
                    EntityInvalidatingRelationshipTypesToCacheKey = EntityInvalidatingRelationshipTypesToCacheKey.GetKeys(key),
                    EntityTypeToCacheKey = EntityTypeToCacheKey.GetKeys(key)
                };

                return serializableKey;
            }, false));
        }