//entities
class Order
int Id
datetime OrderDate
string SomeOtherOrderProp // I dont need to update but it has a value
List<Detail> Details
class Detail
int Id
decimal Quantity
string SomeOtherDetailProp // I dont need to update but it has a value
//DTO's
class OrderDTO
int Id
datetime OrderDate
List<DetailDTO> DetailsDTO
class DetailDTO
int Id
decimal Quantity
我需要从OrderDTO映射到现有订单。
为此,我定义了两个映射:
CreateMap<OrderDTO, Order>()
.ForMember(dest => dest.Details, opt => opt.MapFrom(src => src.DetailsDTO))
CreateMap<DetailDTO, Detail>()
然后我得到我现有的订单。
var order = GetOrderById(int id);
最后,当我这样做
_mapper.Map(orderDto, order),
将所有orderDTO属性转移到我现有的订单属性中,就可以了。
OrderDto.Id被映射到Order.Id。
OrderDTO.OrderDate到Order.OrderDate,
,它保留了Order.SomeOtherOrderProp属性的原始值,这正是我想要和期望的。
但是,子集合属性Details Details SomeOtherDetailProp不会保留其值。 例如,Detail.SomeOtherDetailProp会将其现有值设置为null,因为我的DetailDTO没有该属性。
问题: 对于顶层对象,它保留了SomeOtherOrderProp,但是在子集合中它重写了SomeOtherDetailProp。我该怎么做才能保留SomeOtherDetailProp的原始值?