EF 6,从 DTO 更新实体,但仅限现有属性(通用代码)

EF 6, Update Entity from DTO, but only existing properties (generic code)

我想知道更新从数据库中检索到的实体的最佳方法。 前端请求更新实体,发送包含实体 ID 和一些字段的 DTO。 然后用这个Id在DB里找实体,问题来了:

我想更新实体在DTO中设置的字段,并保留其他字段。 显然我可以逐个字段明确地做到这一点,但我想知道以通用方式对 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和模型之间的映射?我虽然考虑过使用反射,但我找不到是否有更好、更优雅、更标准的方法来做到这一点。

谢谢

我认为在映射对象方面,c# 中最受欢迎的选择是使用 AutoMapper,http://automapper.org/

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