EF 6, обновление объекта из DTO, но только существующие свойства (общий c код) - PullRequest
0 голосов
/ 08 мая 2020

Я хотел бы знать, как лучше всего обновить Entity, полученный из БД. Внешний интерфейс запрашивает обновление для объекта, отправляя DTO, который содержит идентификатор объекта, а также некоторые поля. Затем с этим идентификатором я ищу объект в БД, и здесь возникает вопрос:

Я хочу обновить поля объекта, которые установлены в DTO, и сохранить другие поля. Очевидно, я могу сделать это явно, поле за полем, но я хотел бы знать, как лучше всего делать это общим c способом для всех свойств DTO.

Код будет выглядеть так: :

[HttpPut]
public IActionResult Put([FromBody]PersonDTO pDTO) {
   Person p = GetPersonById(pDTo.IdPerson);
   p.Name = pDTO.Name;
   p.Address = pDTO.Address;
   // and 100 more fields
   _context.SaveChanges();
}

Как мне избежать сопоставления между DTO и моделью? Я думал об использовании отражения, но не могу понять, есть ли лучший, более элегантный и стандартный способ сделать это.

Спасибо

1 Ответ

1 голос
/ 08 мая 2020

Я думаю, что наиболее популярным вариантом c#, когда дело доходит до отображения объектов, является использование AutoMapper, http://automapper.org/

Person person = Mapper.Map<Person>(pDTO);
...