2017-03-22 142 views
1

我是我的asp.net核心项目中的AutoMapper。 我需要将ProjectStructure映射到作业。 这里是我的classes.Any帮助将不胜感激。 我无法从documenation复杂结构之间的自动映射器映射


public class ProjectStructure 
{ 
    public CustomerInfo CustomerInformation { get; set; } 
    public int JobInformationID { get; set; } 
} 

public class CustomerInfo 
{ 
    public DateTime PreferredMeasureTime { get; set; } 
    public DateTime DueDate { get; set; } 
    public ContactDetail ContactDetails { get; set; } 
} 

public class ContactDetail 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string UnitNo { get; set; } 
    public string StreetNo { get; set; } 
} 

public class job 
{ 
    public int jobID { get; set; } 
    public virtual ICollection<address> addresses { get; set; } 

} 


public partial class address 
{ 

    public long id { get; set; } 

    public string unitNumber { get; set; } 

    public string streetNumber { get; set; } 
}} 

回答

1

找出你可以创建一个AutomapperConfiguration类这样:

public class AutoMapperConfiguration 
{ 
    public void Initialize() 
    { 
     AutoMapper.Mapper.Initialize((config) => 
     { 
      config.CreateMap<ProjectStructure, Job>() 
        .AfterMap((src, dest) => 
          { 
           dest.JobID = src.JobInformationID; 
           dest.Addresses = new List<Address> 
           { 
            new Address 
            { 
             StreetNumber = src.CustomerInformation.ContactDetails.StreetNo, 
             UnitNumber = src.CustomerInformation.ContactDetails.UnitNo 
            } 
           }; 
          }); 
     }); 
    } 
} 

然后调用在启动类AutoMapperConfiguration.Initialize();方法(无论是)

0

我有另一张地图像这样定义

CreateMap<ContactDetail, address>() 
      .ForMember(m => m.city, opt => opt.MapFrom(cd => cd.SuburbAddress)) 
      .ForMember(m => m.streetNumber, opt => opt.MapFrom(cd => cd.StreetNo)) 
      .ForMember(m => m.street, opt => opt.MapFrom(cd => cd.StreetAddress)) 
      .ForMember(m => m.town, opt => opt.MapFrom(cd => cd.SuburbAddress)) 
      .ForMember(m => m.unitNumber, opt => opt.MapFrom(cd => cd.UnitNo)) 
      .AfterMap((ContactDetail, address) => { address.contactType = "Site"; address.tvStart = DateTime.Today; }); 

我如何使用.AfterMap而不是映射每个属性?