/// <summary>
        /// Using IMemoryCache as a cache service.
        /// </summary>
        public EFEasyCachingCoreProvider(
            IOptions <EFCoreSecondLevelCacheSettings> cacheSettings,
            IServiceProvider serviceProvider,
            IReaderWriterLockProvider readerWriterLockProvider)
        {
            if (cacheSettings == null)
            {
                throw new ArgumentNullException(nameof(cacheSettings));
            }

            if (serviceProvider == null)
            {
                throw new ArgumentNullException(nameof(serviceProvider));
            }

            _cacheSettings            = cacheSettings.Value;
            _readerWriterLockProvider = readerWriterLockProvider ?? throw new ArgumentNullException(nameof(readerWriterLockProvider));

            if (_cacheSettings.IsHybridCache)
            {
                var hybridFactory = serviceProvider.GetRequiredService <IHybridProviderFactory>();
                _easyCachingProvider = hybridFactory.GetHybridCachingProvider(_cacheSettings.ProviderName);
            }
            else
            {
                var providerFactory = serviceProvider.GetRequiredService <IEasyCachingProviderFactory>();
                _easyCachingProvider = providerFactory.GetCachingProvider(_cacheSettings.ProviderName);
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// Using IRedisDbCache as a cache service.
 /// </summary>
 public EFRedisCacheServiceProvider(
     IRedisDbCache redisDbCache,
     IReaderWriterLockProvider readerWriterLockProvider)
 {
     _redisDbCache             = redisDbCache;
     _readerWriterLockProvider = readerWriterLockProvider;
 }
 /// <summary>
 /// Using IMemoryCache as a cache service.
 /// </summary>
 public MyEFCacheManagerCoreProvider(ICacheManager <ISet <string> > dependenciesCacheManager, ICacheManager <EFCachedData> valuesCacheManager, IReaderWriterLockProvider readerWriterLockProvider)
 {
     _readerWriterLockProvider = readerWriterLockProvider;
     _dependenciesCacheManager = dependenciesCacheManager ?? throw new ArgumentNullException(nameof(dependenciesCacheManager), "Please register the `ICacheManager`.");
     _valuesCacheManager       = valuesCacheManager ?? throw new ArgumentNullException(nameof(valuesCacheManager), "Please register the `ICacheManager`.");
     _dependenciesCacheManager.OnRemoveByHandle += (sender, args) => ClearAllCachedEntries();
 }
Exemplo n.º 4
0
 /// <summary>
 /// Using IMemoryCache as a cache service.
 /// </summary>
 public EFMemoryCacheServiceProvider(
     IMemoryCache memoryCache,
     IMemoryCacheChangeTokenProvider signal,
     IReaderWriterLockProvider readerWriterLockProvider)
 {
     _memoryCache = memoryCache;
     _signal      = signal;
     _readerWriterLockProvider = readerWriterLockProvider;
 }
Exemplo n.º 5
0
 /// <summary>
 /// Using IMemoryCache as a cache service.
 /// </summary>
 public EFEasyCachingCoreProvider(
     IOptions <EFCoreSecondLevelCacheSettings> cacheSettings,
     IEasyCachingProviderFactory easyCachingProviderFactory,
     IReaderWriterLockProvider readerWriterLockProvider)
 {
     _cacheSettings              = cacheSettings?.Value;
     _readerWriterLockProvider   = readerWriterLockProvider;
     _easyCachingProviderFactory = easyCachingProviderFactory ?? throw new ArgumentNullException("Please register the `EasyCaching.Core`.");
     _easyCachingProvider        = _easyCachingProviderFactory.GetCachingProvider(_cacheSettings.ProviderName);
 }
Exemplo n.º 6
0
        /// <summary>
        /// Using IMemoryCache as a cache service.
        /// </summary>
        public MyEFCacheManagerCoreProvider(ICacheManager <ISet <string> > dependenciesCacheManager, ICacheManager <EFCachedData> valuesCacheManager, IReaderWriterLockProvider readerWriterLockProvider)
        {
            _readerWriterLockProvider = readerWriterLockProvider;
            _dependenciesCacheManager = dependenciesCacheManager ?? throw new ArgumentNullException(nameof(dependenciesCacheManager), "Please register the `ICacheManager`.");
            _valuesCacheManager       = valuesCacheManager ?? throw new ArgumentNullException(nameof(valuesCacheManager), "Please register the `ICacheManager`.");

            // Occurs when an item was removed by the cache handle due to expiration or e.g. memory pressure eviction.
            // Without _dependenciesCacheManager items, we can't invalidate cached items on Insert/Update/Delete.
            // So to prevent stale reads, we have to clear all cached data in this case.
            _dependenciesCacheManager.OnRemoveByHandle += (sender, args) => ClearAllCachedEntries();
        }
        /// <summary>
        /// Using IMemoryCache as a cache service.
        /// </summary>
        public EFEasyCachingCoreProvider(
            IOptions <EFCoreSecondLevelCacheSettings> cacheSettings,
            IServiceProvider serviceProvider,
            IReaderWriterLockProvider readerWriterLockProvider)
        {
            _cacheSettings            = cacheSettings?.Value;
            _readerWriterLockProvider = readerWriterLockProvider;

            if (_cacheSettings.IsHybridCache)
            {
                var hybridFactory = serviceProvider.GetRequiredService <IHybridProviderFactory>();
                _easyCachingProvider = hybridFactory.GetHybridCachingProvider(_cacheSettings.ProviderName);
            }
            else
            {
                var providerFactory = serviceProvider.GetRequiredService <IEasyCachingProviderFactory>();
                _easyCachingProvider = providerFactory.GetCachingProvider(_cacheSettings.ProviderName);
            }
        }