вы на неверном пути!обновить сущность с помощью указанных полей очень просто.
1- Создайте DTO.
2- Настроить сопоставление
3- Получить сущность и сопоставить DTO с сущностью.
Оформить заказ на моем примере.В этом примере объект Student
имеет 3 свойства.В методе StudentAppService
UpdateOnlyNameOfStudent()
мы обновляем только поле Name
объекта Student.И обратите внимание, что я даже не запустил _studentRepository.Update(student)
, потому что AspNet Boilerplate фиксирует изменения, когда метод заканчивается (см. автоматическое изменение сохранения )
StudentDto.cs
[AutoMapFrom(typeof(Student))]
public class StudentDto: EntityDto<long>
{
public string Name { get; set; }
}
Student.cs
public class Student: Entity
{
public string Name { get; set; }
public int SchoolNumber { get; set; }
public DateTime RegisterDate { get; set; }
}
StudentAppService.cs
public class StudentAppService : IStudentAppService
{
private readonly IRepository<Student> _studentRepository;
public RoleAppService(IRepository<Student> studentRepository)
{
_studentRepository = studentRepository;
}
public override async void UpdateOnlyNameOfStudent(StudentDto input)
{
var student = _studentRepository.Get(input.Id);
ObjectMapper.Map(input, student);
}
/*
public override async void UpdateOnlyNameOfStudent_Alternative(StudentDto input)
{
var student = _studentRepository.Get(input.Id);
student.Name = input.Name;
}
*/
}
AspNet Boilerplate использует AutoMapper для отображения объектов.См. Отображение объекта на объект