Esempio n. 1
0
        public async Task <Domain.Entities.Manufacturer.Manufacturer> GetAsync(Guid manufacturerId, bool @readonly)
        {
            if (@readonly)
            {
                var cached =
                    _cachingRepository.Get <Domain.Entities.Manufacturer.Manufacturer>(manufacturerId.ToString());

                if (cached != null)
                {
                    return(cached);
                }
            }

            var query = _context.Manufacturers
                        .Include(x => x.Pictures)
                        .ThenInclude(x => x.Picture)
                        .ThenInclude(x => x.MimeType)
                        .AsQueryable();

            if (@readonly)
            {
                query = query.AsNoTracking();
            }

            var manufacturer = await query.FirstOrDefaultAsync(x => x.Id.Equals(manufacturerId));

            if (manufacturer != null && @readonly)
            {
                _cachingRepository.Cache(manufacturerId.ToString(), query);
            }

            return(manufacturer);
        }
Esempio n. 2
0
        public async Task <Domain.Entities.Product.Product> AddAsync(Domain.Entities.Product.Product product)
        {
            _context.ChangeTracker.AutoDetectChangesEnabled = false;
            await _context.AddAsync(product);

            _cachingRepository.Cache(product.Id.ToString(), product);

            _context.ChangeTracker.AutoDetectChangesEnabled = true;
            return(product);
        }
        public async Task <bool> AnyAsync(Guid id)
        {
            var cached = _cachingRepository.Get <Domain.Entities.Product.Category>($"CategoryAsNoTracking_{id}");

            if (cached != null)
            {
                return(true);
            }

            var category = await _context.Categories
                           .AsNoTracking()
                           .AnyAsync(x => x.Id.Equals(id));

            if (category)
            {
                _cachingRepository.Cache(id.ToString(), true);
            }

            return(category);
        }