Сопоставить несколько свойств из ViewModel со списком объектов - PullRequest
0 голосов
/ 17 мая 2019

У меня есть Customer ViewModel, как показано ниже

public class CustomerViewModel
{
   // Various other properties removed for brevity

    public int DiscountRate { get; set; };

    public DateTime DiscountFromDate { get; set; }

    public DateTime DiscountToDate { get; set; };
 }

, который я хочу сопоставить со следующими объектами домена

public class Customer
{
   // Other properties removed for brevity
   public IEnumerable<SettlementDiscount> SettlementDiscounts { get; set; }
}

public class SettlementDiscount
{
    public int CustomerId { get; set; }

    public int DiscountRate { get; set; }

    public DateTime FromDate { get; set; }

    public DateTime ToDate { get; set; }
}

Как можно выполнить сопоставление модели представления с доменомВозврат и возврат с использованием AutoMapper?

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

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

Отображения, которые я до сих пор пробовал,

CreateMap<Customer, CustomerViewModel>()
   .ForMember(dest => dest.DiscountRate, opt => opt.MapFrom(src => src.SettlementDiscounts.FirstOrDefault().DiscountRate))
   .ForMember(dest => dest.DiscountFromDate, opt => opt.MapFrom(src => src.SettlementDiscounts.FirstOrDefault().FromDate))
   .ForMember(dest => dest.DiscountToDate, opt => opt.MapFrom(src => src.SettlementDiscounts.FirstOrDefault().ToDate))
   .ReverseMap()
   .ForMember(dest => dest.SettlementDiscounts.FirstOrDefault().DiscountRate, opt => opt.MapFrom(src => src.DiscountRate))
   .ForMember(dest => dest.SettlementDiscounts.FirstOrDefault().FromDate, opt => opt.MapFrom(src => src.DiscountFromDate))
   .ForMember(dest => dest.SettlementDiscounts.FirstOrDefault().ToDate, opt => opt.MapFrom(src => src.DiscountToDate));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...