/// <summary>
        /// Using IMemoryCache as a cache service.
        /// </summary>
        public EFEasyCachingCoreProvider(
            IOptions <EFCoreSecondLevelCacheSettings> cacheSettings,
            IServiceProvider serviceProvider,
            IReaderWriterLockProvider readerWriterLockProvider,
            IEFDebugLogger logger)
        {
            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));
            _logger = logger;

            if (_cacheSettings.IsHybridCache)
            {
                var hybridFactory = serviceProvider.GetRequiredService <IHybridProviderFactory>();
                _easyCachingProvider = hybridFactory.GetHybridCachingProvider(_cacheSettings.ProviderName);
            }
            else
            {
                var providerFactory = serviceProvider.GetRequiredService <IEasyCachingProviderFactory>();
                _easyCachingProvider = providerFactory.GetCachingProvider(_cacheSettings.ProviderName);
            }
        }
 /// <summary>
 /// Cache Dependencies Calculator
 /// </summary>
 public EFCacheDependenciesProcessor(
     IEFDebugLogger logger,
     IEFCacheServiceProvider cacheServiceProvider)
 {
     _logger = logger;
     _cacheServiceProvider = cacheServiceProvider;
 }
 /// <summary>
 /// EFCachePolicy Parser Utils
 /// </summary>
 public EFCachePolicyParser(
     IOptions <EFCoreSecondLevelCacheSettings> cacheSettings,
     IEFCacheDependenciesProcessor cacheDependenciesProcessor,
     IEFDebugLogger logger)
 {
     _cacheSettings = cacheSettings?.Value;
     _cacheDependenciesProcessor = cacheDependenciesProcessor;
     _logger = logger;
 }
Exemplo n.º 4
0
 /// <summary>
 /// EFCachePolicy Parser Utils
 /// </summary>
 public EFCachePolicyParser(
     IOptions <EFCoreSecondLevelCacheSettings> cacheSettings,
     IEFSqlCommandsProcessor sqlCommandsProcessor,
     IEFDebugLogger logger)
 {
     _cacheSettings        = cacheSettings?.Value;
     _sqlCommandsProcessor = sqlCommandsProcessor;
     _logger = logger;
 }
 /// <summary>
 /// A custom cache key provider for EF queries.
 /// </summary>
 public EFCacheKeyProvider(
     IEFCacheDependenciesProcessor cacheDependenciesProcessor,
     IEFCachePolicyParser cachePolicyParser,
     IEFDebugLogger logger)
 {
     _cacheDependenciesProcessor = cacheDependenciesProcessor;
     _logger            = logger;
     _cachePolicyParser = cachePolicyParser;
 }
Exemplo n.º 6
0
 /// <summary>
 /// Cache Dependencies Calculator
 /// </summary>
 public EFCacheDependenciesProcessor(
     IEFDebugLogger logger,
     IEFCacheServiceProvider cacheServiceProvider,
     IEFSqlCommandsProcessor sqlCommandsProcessor)
 {
     _logger = logger;
     _cacheServiceProvider = cacheServiceProvider;
     _sqlCommandsProcessor = sqlCommandsProcessor;
 }
        /// <summary>
        /// A custom cache key provider for EF queries.
        /// </summary>
        public EFCacheKeyProvider(
            IEFCacheDependenciesProcessor cacheDependenciesProcessor,
            IEFCachePolicyParser cachePolicyParser,
            IEFDebugLogger logger, IOptions <EFCoreSecondLevelCacheSettings> cacheSettings)
        {
            _cacheDependenciesProcessor = cacheDependenciesProcessor;
            _logger            = logger;
            _cachePolicyParser = cachePolicyParser;
#pragma warning disable CA1062 // Validate arguments of public methods
            _keyPrefix = cacheSettings.Value.CacheKeyPrefix;
#pragma warning restore CA1062 // Validate arguments of public methods
        }
 /// <summary>
 /// Helps processing SecondLevelCacheInterceptor
 /// </summary>
 public DbCommandInterceptorProcessor(
     IEFDebugLogger logger,
     IEFCacheServiceProvider cacheService,
     IEFCacheDependenciesProcessor cacheDependenciesProcessor,
     IEFCacheKeyProvider cacheKeyProvider,
     IEFCachePolicyParser cachePolicyParser)
 {
     _cacheService = cacheService;
     _cacheDependenciesProcessor = cacheDependenciesProcessor;
     _cacheKeyProvider           = cacheKeyProvider;
     _cachePolicyParser          = cachePolicyParser;
     _logger = logger;
 }
        /// <summary>
        /// EFCachePolicy Parser Utils
        /// </summary>
        public EFCachePolicyParser(
            IOptions <EFCoreSecondLevelCacheSettings> cacheSettings,
            IEFSqlCommandsProcessor sqlCommandsProcessor,
            IEFDebugLogger logger)
        {
            if (cacheSettings == null)
            {
                throw new ArgumentNullException(nameof(cacheSettings));
            }

            _cacheSettings        = cacheSettings.Value;
            _sqlCommandsProcessor = sqlCommandsProcessor ?? throw new ArgumentNullException(nameof(sqlCommandsProcessor));
            _logger = logger ?? throw new ArgumentNullException(nameof(logger));
        }
        /// <summary>
        /// Using IMemoryCache as a cache service.
        /// </summary>
        public EFCacheManagerCoreProvider(
            ICacheManager <ISet <string> > dependenciesCacheManager,
            ICacheManager <EFCachedData> valuesCacheManager,
            IReaderWriterLockProvider readerWriterLockProvider,
            IEFDebugLogger logger)
        {
            _readerWriterLockProvider = readerWriterLockProvider;
            _dependenciesCacheManager = dependenciesCacheManager ?? throw new ArgumentNullException(nameof(dependenciesCacheManager), "Please register the `ICacheManager`.");
            _valuesCacheManager       = valuesCacheManager ?? throw new ArgumentNullException(nameof(valuesCacheManager), "Please register the `ICacheManager`.");
            _logger = logger;

            // 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>
        /// Cache Dependencies Calculator
        /// </summary>
        public EFCacheDependenciesProcessor(
            IEFDebugLogger logger,
            IEFCacheServiceProvider cacheServiceProvider,
            IEFSqlCommandsProcessor sqlCommandsProcessor,
            IOptions <EFCoreSecondLevelCacheSettings> cacheSettings)
        {
            _logger = logger;
            _cacheServiceProvider = cacheServiceProvider;
            _sqlCommandsProcessor = sqlCommandsProcessor;

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

            _cacheSettings = cacheSettings.Value;
        }
        /// <summary>
        /// A custom cache key provider for EF queries.
        /// </summary>
        public EFCacheKeyProvider(
            IEFCacheDependenciesProcessor cacheDependenciesProcessor,
            IEFCachePolicyParser cachePolicyParser,
            IEFDebugLogger logger,
            IOptions <EFCoreSecondLevelCacheSettings> cacheSettings)
        {
            _cacheDependenciesProcessor = cacheDependenciesProcessor;
            _logger            = logger;
            _cachePolicyParser = cachePolicyParser;

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

            _cacheSettings = cacheSettings.Value;
        }