2014-09-22 112 views
3

我有這兩個視圖模型創建地圖:AutoMapper:與包括類

public class SettingsViewModel 
{ 
    public string UserId { get; set; } 
    public PersonalViewModel Personal { get; set; } 
} 

public class PersonalViewModel 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 

實施這些視圖模型後,我創建了automapper地圖:

Mapper.CreateMap<User, PersonalViewModel>() 
     .ForMember(vm => vm.Birthday, m => m.MapFrom(
      u => (u.Birthday.HasValue) ? u.Birthday.Value.ToString("dd.MM.yyyy") : DateTime.Now.ToString("dd.MM.yyyy"))); 

    Mapper.CreateMap<User, SettingsViewModel>() 
     .ForMember(vm => vm.UserId, m => m.MapFrom(
      u => u.Id)); 

    var viewModel = Mapper.Map<User, SettingsViewModel>(user); 

現在我有這個問題,我的房產Personal在我的SettingsViewModel爲空。我怎樣才能結合我的兩個映射?我如何使用我的用戶對象中的數據填充我的Personal屬性?在我的用戶對象中,有FirstNameLastName的屬性。

回答

1

你可以設置你的映射是這樣的:

Mapper.CreateMap<User, SettingsViewModel>() 
    .ForMember(vm => vm.UserId, m => m.MapFrom(u => u.Id)) 
    .ForMember(vm => vm.Personal, opt => opt.MapFrom(u => u)); 

在這裏,我們說地圖從User對象本身的Personal財產。當您指定此項時,將自動使用UserPersonalViewModel的映射。

實施例:https://dotnetfiddle.net/YJnPDq