public async Task <bool> UpdateProductAsync(ProductServiceModel serviceModel) { var oldProduct = await AllProduct.FirstOrDefaultAsync(o => o.Id == serviceModel.Product.Id); var productEntry = _context.Entry(oldProduct); serviceModel.Product.LastUpdateByUserId = serviceModel.User.Id; serviceModel.Product.LastUpdateDate = DateTime.Now; productEntry.CurrentValues.SetValues(serviceModel.Product); _context.Entry(oldProduct).Property(o => o.CreateByUserId).IsModified = false; _context.Entry(oldProduct).Property(o => o.CreateDate).IsModified = false; foreach (var newDetail in serviceModel.Product.Details) { var oldDetail = oldProduct.Details.FirstOrDefault(o => o.ForCurrentRequestLanguage()); if (oldDetail.Language == newDetail.Language) { newDetail.Id = oldDetail.Id; _context.Entry(oldDetail).CurrentValues.SetValues(newDetail); } } _context.TryUpdateManyToMany(oldProduct.EntityFiles, serviceModel.Product.EntityFiles, o => o.FileEntityId); _context.TryUpdateManyToMany(oldProduct.EntityTaxonomies, serviceModel.Product.EntityTaxonomies, o => o.TaxonomyId); var updateResultCount = await _context.SaveChangesAsync(); return(updateResultCount > 0); }