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

问题描述 投票:0回答:1

我想知道更新一个从DB中获取的实体的最佳方法。前端请求更新一个实体,发送一个包含实体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和Model之间的映射?我曾想过使用反射,但我不知道是否有更好、更优雅、更标准的方法来实现它。

谢谢你

c# asp.net-core entity-framework-6 dto
1个回答
1
投票

我想在c#中,在映射对象的时候,最流行的选择是使用AutoMapper。http:/automapper.org

Person person = Mapper.Map<Person>(pDTO);
© www.soinside.com 2019 - 2024. All rights reserved.