自动装置没有正常工作
本文关键字:工作 常工作 自动装置 | 更新日期: 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
。