2016-07-09 5 views
0
public class SecurityAccess : IdentityUser { 
    public string LName { get; set; } 
    public string FName { get; set; } 
    public string MName { get; set; } 
    public DateTime NameDate { get; set; } 
    public DateTime DOB { get; set; } 
    public string Spouse { get; set; } 
    public string Comments { get; set; } 
    public Address Address { get; set; }  
} 

public class Address { 
    public int Id { get; set; } 
    public int OwnerId { get; set; } 
    public DateTime CreationDate { get; set; } 
    public Company Company { get; set; } 
    public string Department { get; set; } 
    public string Title { get; set; } 
    public string Location{ get; set; } 
    public string City { get; set; } 
    public string State { get; set; } 
    public string Zip { get; set; } 
    public string Country { get; set; } 
    public string Salutation { get; set; } 
    public bool Active { get; set; }   
} 

public class Company { 
    public int Id { get; set; } 
    public string Name { get; set; }   
    public DateTime CompanyDate { get; set; }  
} 

public class ContactRegisterViewModel { 
     public byte Id { get; set; } 
     public String FName { get; set; } 
     public String LName { get; set; } 
     public String CompanyName { get; set; } 
     public String AddressesTitle { get; set; } 
     public String AddressesLocation { get; set; } 
     public String AddressesCity { get; set; } 
     public String AddressesState { get; set; } 
     public String AddressesZip { get; set; } 
     public String AddressesCountry { get; set; } 
     public String AddressesPhone { get; set; } 
     public String AddressesEmail { get; set; } 
} 

Я следующие отображения установлены в AutomapperКак я карта вложенных объектов

CreateMap<ContactRegisterViewModel, SecurityAccess>() 
      .ForMember(dest => dest.Address, 
         opts => opts.MapFrom(
          src => new Address 
          { 
           Address1 = src.AddressesAddress1, 
           Title = src.AddressesTitle, 
           City = src.AddressesCity, 
           State = src.AddressesState, 
           Zip = src.AddressesState, 
           Country = src.AddressesCountry, 
           Email = src.AddressesEmail, 
           Phone = src.AddressesPhone, 

          })).ReverseMap(); 

Я пытаюсь преобразовать ContactRegisterViewModel в SecurityAccess. Преобразование частично работает. Я могу получить соответствующие свойства, заполненные SecurityAccess, включая поле свойства Address, которое находится в модели SecurityAccess, но я поражен, пытаясь еще больше сопоставить свойство CompanyRegisterViewModel CompanyName с свойством в Address.Company.Name.

Любые предложения, как я могу отобразить все дерево объектов ?.

+0

любая помощь, вроде отчаянная для решения? –

ответ

1

Так один из возможных решений будет идти-то вроде этого:

CreateMap<ContactRegisterViewModel, SecurityAccess>() 
    .ForMember(d => d.Address, o => o.MapFrom(s => s)); 

CreateMap<ContactRegisterViewModel, Address>() 
    .ForMember(d => d.Title, o => o.MapFrom(s => s.AddressesTitle)) 
    .ForMember(d => d.Company, o => o.MapFrom(s => s)); 

CreateMap<ContactRegisterViewModel, Company>() 
    .ForMember(d => d.Name, o => o.MapFrom(s => s.CompanyName)); 

Это должно получить работу, хотя это, вероятно, не самый изящный. Возможно стоит посмотреть на те методы ConstructUsing/ConvertUsing (см. here).

+0

Вы спасатель, спасибо @AlexandruMarculescu, что было идеально, работал как шарм !! –

+0

Если я бросаю мяч кривой кривой и делаю адрес в SecurityAccess 'public IEnumerable

Адреса {get; задавать; } ' и Компания в адресной таблице ' public IEnumerable Компании {get; set;} ' Как будет выполняться сопоставление? –

Смежные вопросы