2011-09-09 45 views
2

我有这行代码在我的Global.asaxAutomapper行为不正确

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,但名称为空。按照文件它应该工作:

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

如果我改变我的Global.asax的映射这样的:

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

它的作品!这让我好奇。文件是否错误?还是我做错了?

回答

5

如果按照标准的命名规则将工作:

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

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

+0

没错。我错过了阅读在文档:( – Jaggu