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