AutoMapper - сопоставление существующей модели с дочерней коллекцией из ViewModel с дочерней коллекцией - PullRequest
0 голосов
/ 03 октября 2018
//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 to Order.OrderDate,

, и он сохраняет исходное значение свойства Order.SomeOtherOrderProp, чего я и ожидаю.

Однако свойство дочерних коллекций Details SomeOtherDetailProp не сохраняет свое значение.Например, Detail.SomeOtherDetailProp получит свое существующее значение равным нулю, поскольку у моего DetailDTO не было этого свойства.

Вопрос: Для объекта верхнего уровня он сохранил SomeOtherOrderProp, нов дочерней коллекции он перезаписал SomeOtherDetailProp.Что мне нужно сделать, чтобы он сохранил исходное значение SomeOtherDetailProp?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...