2016-05-16 16 views
5

Tôi có một vài lớp:Làm cách nào để ánh xạ một đối tượng phức tạp với Automapper?

public class Customer 
{ 
    public string FirstName { get; set; } 

    public string LastName { get; set; } 

    public Product Product { get; set; } 
} 

public class Product 
{ 
    public string Name { get; set; } 
} 


public class Customer_ 
{ 
    public string FirstName { get; set; } 

    public string LastName { get; set; } 

    public Article Article { get; set; } 
} 

public class Article 
{ 
    public string ArticleName { get; set; } 
} 

Và một ví dụ:

Customer[] Customer = new Customer[] 
{ 
    new Customer() 
    { 
     FirstName = "FirstName1", 
     LastName = "LastName1", 
     Product = new Product() 
     { 
      Name = "Product1" 
     } 
    }, 
    new Customer() 
    { 
     FirstName = "FirstName2", 
     LastName = "LastName2", 
     Product = new Product() 
     { 
      Name = "Product2" 
     } 
    } 
}; 

Tôi muốn để lập bản đồ trường hợp này cho một đối tượng Customer_ nơi Customer.Product.Name = Customer_.Article.ArticleName

tôi sử dụng Automapper:

var config = new MapperConfiguration(cfg => 
{ 
    cfg.CreateMap<Product, Article>() 
    .ForMember(dest => dest.ArticleName, opt => opt.MapFrom(src => src.Name)); 

}); 

IMapper mapper = config.CreateMapper(); 
var desti = mapper.Map<Customer[], Customer_[]>(Customer); 

Nhưng tôi có một ngoại lệ:

Missing type map configuration or unsupported mapping. 

Mapping types: 
Customer -> Customer_ 
Xml_Test.Customer -> Xml_Test.Customer_ 

Destination path: 
Customer_[][0] 

Source value: 
Xml_Test.Customer 

Điều gì là sai?

+1

Chỉ cần thêm 'Customer' lập bản đồ: 'cfg.CreateMap ()' như đã nói trong thông báo lỗi. –

Trả lời

4

này nên giải quyết vấn đề -

AutoMapper.Mapper.CreateMap<Product, Article>() 
      .ForMember(a => a.ArticleName, b => b.ResolveUsing(c => c.Name)); 
AutoMapper.Mapper.CreateMap<Customer, Customer_>() 
      .ForMember(a => a.Article, b => b.ResolveUsing(c => c.Product)); 
Các vấn đề liên quan