/// <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)); }