Automapper не ведет себя должным образом - PullRequest
2 голосов
/ 09 сентября 2011

У меня есть эта строка кода в моем global.asax

Mapper.CreateMap<Order, OrderDTO>();

Это мои занятия:

public class Customer
    {
        public string Name {get; set;}
    }
    public class Order
    {
        public int OrderId { get; set; }
        public Customer Customer { get; set; }
    }

    public class OrderDTO
    {
        public int OrderId { get; set; }
        public string Name { get; set; }

    }

А это мой код:

Customer cust = new Customer { Name = "Jaggu" };

Order order = new Order { Customer = cust, OrderId = 123 };

OrderDTO dto = Mapper.Map<Order,OrderDTO>(order);

мой dto содержит OrderId, но имя равно null. По документации это должно работать:

https://github.com/AutoMapper/AutoMapper/wiki/Flattening

Если я изменю отображение своего global.asax на это:

Mapper.CreateMap<Order, OrderDTO>().ForMember(dest => dest.Name, 
       mapping => mapping.MapFrom(order => order.Customer.Name));

это работает! Это делает меня любопытным. Док не прав? или я делаю это неправильно?

1 Ответ

5 голосов
/ 09 сентября 2011

Это будет работать, если вы будете следовать стандартному соглашению об именах:

public class OrderDTO
{
    public int OrderId { get; set; }
    public string CustomerName { get; set; }
}

Обратите внимание, что свойство называется CustomerName, а не Name.При сведении модели Order в Dto, Customer.Name переходит в CustomerName.

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