После сопоставления DTO с использованием AutoMapper поле Id становится 0 - PullRequest
0 голосов
/ 30 июня 2019

Пожалуйста, найдите код ниже:

public class CustomerDto
{  
    public int Id { get; set; }

    [Required]
    [StringLength(255)]
    public String Name { get; set; }
}

public class Customer
{  
    public int Id { get; set; }

    [Required]
    [StringLength(255)]
    public String Name { get; set; }
}

// ...

var customers = _context.Customers.ToList();
var cusDtos= Mapper.Map<List<Customer>,List<CustomerDto>>(customers);
return cusDtos;

Все объекты в cusDtos имеют значение для всех свойств, кроме Id, Id равно 0 для всех объектов. customer содержит значение для Id, но после сопоставления Id становится 0. Может кто-нибудь, пожалуйста, помогите мне решить эту проблему?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 30 июня 2019

Конфигурация AutoMapper:

CreateMap<Customer, CustomerDto>();

Ваш код:

var customers = _context.Customers.ToList();
var cusDtos = customers.Select(x => AutoMapper.Mapper.Map<CustomerDto>(x)).ToList();
return cusDtos;
0 голосов
/ 30 июня 2019

Вы пытались изменить этот код

var cusDtos= Mapper.Map<List<Customer>,List<CustomerDto>>(customers);

изменить с помощью этого

var cusDtos= Mapper.Map<List<CustomerDto>>(customers);

и найти профиль автоматического обработчика.И измените это

 CreateMap<Customer, CustomerDto>()
         .ForMember(m => m.Id, opt => opt.Ignore());

на это

 CreateMap<Customer, CustomerDto>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...