public async Task <IActionResult> PartiallyUpdateEmployeeForCompany(Guid companyId, Guid employeeId, JsonPatchDocument <EmployUpdateDto> patchDocument)
        {
            if (!await companyRepository.CompanyExistsAsync(companyId))
            {
                return(NotFound());
            }
            var employeeEntity = await companyRepository.GetEmployeeAsync(companyId, employeeId);

            if (employeeEntity == null)
            {
                var employeeDto = new EmployUpdateDto();
                patchDocument.ApplyTo(employeeDto, ModelState);
                if (TryValidateModel(employeeDto))
                {
                    return(ValidationProblem(ModelState));
                }
                var employeeToAdd = mapper.Map <Employee>(employeeDto);
                employeeToAdd.Id = employeeId;

                companyRepository.AddEmployee(companyId, employeeToAdd);
                await companyRepository.SaveAsync();

                var dtoToReturn = mapper.Map <Employee>(employeeToAdd);

                return(CreatedAtRoute(nameof(GetemployesFromCompany), new { CompanyId = companyId, employeeId = dtoToReturn.Id }, dtoToReturn));
            }
            var dotToPatch = mapper.Map <EmployUpdateDto>(employeeEntity);

            //需要处理验证错误
            //这个是检测JsonPatchDocument
            //不到对应映射的属性会ModelState出错
            patchDocument.ApplyTo(dotToPatch, ModelState);
            //假如为不空的字段更新""就不行
            if (TryValidateModel(dotToPatch))
            {
                return(ValidationProblem(ModelState));
            }

            mapper.Map(dotToPatch, employeeEntity);

            companyRepository.UpdateEmployee(employeeEntity);

            await companyRepository.SaveAsync();

            return(NoContent());
        }
        public async Task <IActionResult> UpdateEmployeeForCompany(Guid companyId, Guid employeeId, EmployUpdateDto employ)
        {
            if (!await companyRepository.CompanyExistsAsync(companyId))
            {
                return(NotFound());
            }
            var employeeEntity = await companyRepository.GetEmployeeAsync(companyId, employeeId);

            if (employeeEntity == null)
            {
                var employeeToAddEntity = mapper.Map <Employee>(employ);
                employeeToAddEntity.Id = employeeId;

                companyRepository.AddEmployee(companyId, employeeToAddEntity);

                await companyRepository.SaveAsync();

                var dtoToReturn = mapper.Map <EmployeeDto>(employeeToAddEntity);
                return(CreatedAtRoute(nameof(GetemployesFromCompany), new { CompanyId = companyId, employeeId = dtoToReturn.Id }, dtoToReturn));
            }

            //entity转化成updatedto
            //把转化进来的employ的值更新到updateDto
            //把updatedto映射回entity
            mapper.Map(employ, employeeEntity);

            companyRepository.UpdateEmployee(employeeEntity);
            await companyRepository.SaveAsync();

            return(NoContent());
        }