public void AddOne(Product item)
    {
        CustomValidator.ValidateObject(item);
        var exists = Exists(item.Id);

        if (!exists)
        {
            var enState = _context.Products.Add(_productMapper.DomainToDb(item));
            enState.State = EntityState.Added;
            _context.SaveChanges();
        }
    }
        public async Task AddOne(Product item)
        {
            CustomValidator.ValidateObject(item);
            await using var context = new MyDbContext(_options);
            if (!Exists(item.Id))
            {
                var enState = await context.Products.AddAsync(_productMapper.DomainToDb(item));

                enState.State = EntityState.Added;
                await context.SaveChangesAsync();
            }
        }
示例#3
0
    public void CheckBooksForExpiration()
    {
        var books         = (from bookDbModel in _context.Books.ToList() select _bookMapper.DbToDomain(bookDbModel)).ToList();
        var booksToRemove = new List <Book>();

        foreach (var book in books)
        {
            var result = book.IsExpired();
            if (!result)
            {
                return;
            }
            var productDbModel = _context.Products.Find(book.ProductId);
            CustomValidator.ValidateObject(productDbModel);
            var product = _productMapper.DbToDomain(productDbModel);
            product.ChangeStatus(ProductStatus.OnSale);
            DetachService.Detach <ProductDbModel>(_context, product.Id);
            _context.Products.Update(_productMapper.DomainToDb(product));
            booksToRemove.Add(book);
        }

        foreach (var book in booksToRemove)
        {
            DetachService.Detach <BookDbModel>(_context, book.Id);
            _context.Books.Remove(_bookMapper.DomainToDb(book));
        }

        _context.SaveChanges();
    }
        public async Task CheckBooksForExpiration()
        {
            await using var context = new MyDbContext(_options);
            var bookDbModels = await context.Books.ToListAsync();

            var books         = (from bookDbModel in bookDbModels select _bookMapper.DbToDomain(bookDbModel)).ToList();
            var booksToRemove = new List <Book>();

            foreach (var book in books)
            {
                var isExpired = book.IsExpired();
                if (!isExpired && context.Products.Any(e => e.Id.Equals(book.ProductId)))
                {
                    continue;
                }

                var productDbModel = await context.Products.FindAsync(book.ProductId);

                if (productDbModel != null)
                {
                    var product = _productMapper.DbToDomain(productDbModel);
                    product.ChangeStatus(ProductStatus.OnSale);
                    DetachService.Detach <ProductDbModel>(context, product.Id);
                    var enState = context.Products.Update(_productMapper.DomainToDb(product));
                    enState.State = EntityState.Modified;
                }

                booksToRemove.Add(book);
            }

            foreach (var book in booksToRemove)
            {
                DetachService.Detach <BookDbModel>(context, book.Id);
                context.Books.Remove(_bookMapper.DomainToDb(book));
            }

            await context.SaveChangesAsync();
        }