自动映像表现不正常

Jag*_*ggu 2 c# automapper

我在global.asax中有这行代码

Mapper.CreateMap<Order, OrderDTO>();
Run Code Online (Sandbox Code Playgroud)

这些是我的课程:

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; }

    }
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

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

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

OrderDTO dto = Mapper.Map<Order,OrderDTO>(order);
Run Code Online (Sandbox Code Playgroud)

我的dto包含OrderId,但Name为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));
Run Code Online (Sandbox Code Playgroud)

有用!这让我很好奇.这个文件错了吗?或者我做错了吗?

Dar*_*rov 5

如果您遵循标准命名约定,它将起作用:

public class OrderDTO
{
    public int OrderId { get; set; }
    public string CustomerName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

请注意,该属性称为CustomerName不Name.当将Order模型展平为a时Dto,Customer.Name进入CustomerName.