示例#1
0
        /// <summary>
        /// Set the invalidating entities, relationships and
        /// fields from the <see cref="CacheContext"/>.
        /// </summary>
        /// <param name="cacheContext">
        /// The <see cref="CacheContext"/>
        /// </param>
        /// <param name="key">
        /// The key to associate the entities, relationships and fields with.
        /// </param>
        /// <exception cref="ArgumentNullException">
        /// <paramref name="cacheContext"/> cannot be null.
        /// </exception>
        public void AddInvalidations(CacheContext cacheContext, TKey key)
        {
            if (cacheContext == null)
            {
                throw new ArgumentNullException("cacheContext");
            }

            EntityToCacheKey.AddOrUpdateKeys(cacheContext.Entities, key);
            FieldTypeToCacheKey.AddOrUpdateKeys(cacheContext.FieldTypes, key);
            RelationshipTypeToCacheKey.AddOrUpdateKeys(cacheContext.RelationshipTypes, key);
            EntityInvalidatingRelationshipTypesToCacheKey.AddOrUpdateKeys(cacheContext.EntityInvalidatingRelationshipTypes, key);
            EntityTypeToCacheKey.AddOrUpdateKeys(cacheContext.EntityTypes, key);
        }
示例#2
0
        /// <summary>
        /// Merge the values for the specified serializable cache invalidation key with those already present.
        /// </summary>
        /// <param name="lazySerializableKey">The lazy serializable key.</param>
        public void FromSerializableKey(Lazy <SerializableCacheInvalidationKey <TKey> > lazySerializableKey)
        {
            if (lazySerializableKey == null)
            {
                return;
            }

            var serializableKey = lazySerializableKey.Value;

            if (serializableKey == null)
            {
                return;
            }

            if (serializableKey.EntityToCacheKey != null)
            {
                EntityToCacheKey.AddOrUpdateKeys(serializableKey.EntityToCacheKey, serializableKey.Key);
            }

            if (serializableKey.FieldTypeToCacheKey != null)
            {
                FieldTypeToCacheKey.AddOrUpdateKeys(serializableKey.FieldTypeToCacheKey, serializableKey.Key);
            }

            if (serializableKey.RelationshipTypeToCacheKey != null)
            {
                RelationshipTypeToCacheKey.AddOrUpdateKeys(serializableKey.RelationshipTypeToCacheKey, serializableKey.Key);
            }

            if (serializableKey.EntityInvalidatingRelationshipTypesToCacheKey != null)
            {
                EntityInvalidatingRelationshipTypesToCacheKey.AddOrUpdateKeys(serializableKey.EntityInvalidatingRelationshipTypesToCacheKey, serializableKey.Key);
            }

            if (serializableKey.EntityTypeToCacheKey != null)
            {
                EntityTypeToCacheKey.AddOrUpdateKeys(serializableKey.EntityTypeToCacheKey, serializableKey.Key);
            }
        }