自动装置没有正常工作

本文关键字:工作 常工作 自动装置 | 更新日期: 2023-09-27 18:07:58

我在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);

my dto包含OrderId,但Name为空。根据文档,它应该工作:

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

如果我改变全局变量。Asax映射到this:

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

它工作!这让我很好奇。医生错了吗?还是我做错了?

自动装置没有正常工作

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

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

注意属性被称为CustomerName而不是Name。当将Order模型压扁为Dto时,Customer.Name变为CustomerName