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(); } }
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(); }