コード例 #1
0
        public async Task Get_Tenant_Should_Cached()
        {
            var acme = await _tenantRepository.FindByNameAsync("acme");

            acme.ShouldNotBeNull();

            (await _cache.GetAsync(TenantCacheItem.CalculateCacheKey(acme.Id, null))).ShouldBeNull();
            (await _cache.GetAsync(TenantCacheItem.CalculateCacheKey(null, acme.Name))).ShouldBeNull();

            await _tenantStore.FindAsync(acme.Id);

            (await _cache.GetAsync(TenantCacheItem.CalculateCacheKey(acme.Id, null))).ShouldNotBeNull();

            await _tenantStore.FindAsync(acme.Name);

            (await _cache.GetAsync(TenantCacheItem.CalculateCacheKey(null, acme.Name))).ShouldNotBeNull();


            var volosoft = _tenantRepository.FindByName("volosoft");

            volosoft.ShouldNotBeNull();

            (_cache.Get(TenantCacheItem.CalculateCacheKey(volosoft.Id, null))).ShouldBeNull();
            (_cache.Get(TenantCacheItem.CalculateCacheKey(null, volosoft.Name))).ShouldBeNull();

            _tenantStore.Find(volosoft.Id);
            (_cache.Get(TenantCacheItem.CalculateCacheKey(volosoft.Id, null))).ShouldNotBeNull();

            _tenantStore.Find(volosoft.Name);
            (_cache.Get(TenantCacheItem.CalculateCacheKey(null, volosoft.Name))).ShouldNotBeNull();
        }
コード例 #2
0
        protected virtual async Task <TenantCacheItem> SetCacheAsync(string cacheKey, [CanBeNull] Tenant tenant)
        {
            var tenantConfiguration = tenant != null?ObjectMapper.Map <Tenant, TenantConfiguration>(tenant) : null;

            var cacheItem = new TenantCacheItem(tenantConfiguration);
            await Cache.SetAsync(cacheKey, cacheItem, considerUow : true);

            return(cacheItem);
        }
コード例 #3
0
        public async Task Cache_Should_Invalidator_When_Tenant_Changed()
        {
            var acme = await _tenantRepository.FindByNameAsync("acme");

            acme.ShouldNotBeNull();

            // FindAsync will cache tenant.
            await _tenantStore.FindAsync(acme.Id);

            await _tenantStore.FindAsync(acme.Name);

            (await _cache.GetAsync(TenantCacheItem.CalculateCacheKey(acme.Id, null))).ShouldNotBeNull();
            (await _cache.GetAsync(TenantCacheItem.CalculateCacheKey(null, acme.Name))).ShouldNotBeNull();

            await _tenantRepository.DeleteAsync(acme);

            (await _cache.GetAsync(TenantCacheItem.CalculateCacheKey(acme.Id, null))).ShouldBeNull();
            (await _cache.GetAsync(TenantCacheItem.CalculateCacheKey(null, acme.Name))).ShouldBeNull();


            var volosoft = await _tenantRepository.FindByNameAsync("volosoft");

            volosoft.ShouldNotBeNull();

            // Find will cache tenant.
            _tenantStore.Find(volosoft.Id);
            _tenantStore.Find(volosoft.Name);

            (_cache.Get(TenantCacheItem.CalculateCacheKey(volosoft.Id, null))).ShouldNotBeNull();
            (_cache.Get(TenantCacheItem.CalculateCacheKey(null, volosoft.Name))).ShouldNotBeNull();

            await _tenantRepository.DeleteAsync(volosoft);

            (_cache.Get(TenantCacheItem.CalculateCacheKey(volosoft.Id, null))).ShouldBeNull();
            (_cache.Get(TenantCacheItem.CalculateCacheKey(null, volosoft.Name))).ShouldBeNull();
        }
コード例 #4
0
        public virtual async Task HandleEventAsync(EntityChangedEventData <Tenant> eventData)
        {
            await Cache.RemoveAsync(TenantCacheItem.CalculateCacheKey(eventData.Entity.Id, null), considerUow : true);

            await Cache.RemoveAsync(TenantCacheItem.CalculateCacheKey(null, eventData.Entity.Name), considerUow : true);
        }
コード例 #5
0
 protected virtual string CalculateCacheKey(Guid?id, string name)
 {
     return(TenantCacheItem.CalculateCacheKey(id, name));
 }