2014-09-22 62 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