AutoMapper - 自定义映射

时间:2016-10-08 08:56:24

标签: c# .net asp.net-core mapping automapper

使用AutoMapper设置从数据库实体到我的视图模型的自定义映射时遇到了麻烦。

我的目标是将 ApplicationUser 映射到我的 ApplicationUserViewModel

我正在返回这样的用户列表:

return View(Mapper.Map<IEnumerable<ApplicationUserViewModel>>(_userRepository.GetAllUsersWithRoles()));

在Startup.cs中,我的AutoMapper配置包括以下内容:

Mapper.Initialize(config =>
{
   ...
   config.CreateMap<ApplicationUserViewModel, ApplicationUser>().ReverseMap();
});

我基本上想要告诉AutoMapper自动将我的ViewModel类(IsConnectedToFacebook)的以下属性设置为true,如果来自数据库的ApplicationUser实体有一个与提供者facebook存储的登录名。所以有人想这样:

viewmodel.IsConnectedToFacebook = user.Logins.Any(login => login.LoginProvider == "Facebook");

这里是视图模型:

public class ApplicationUserViewModel
{
   ...
   public bool IsConnectedToFacebook { get; set; }
}

非常感谢你的帮助!

的Nik

1 个答案:

答案 0 :(得分:3)

我得到了以下工作:

config.CreateMap<ApplicationUser, ApplicationUserViewModel>()
                    .ForMember(dest => dest.IsConnectedToFacebook,
                        src => src.MapFrom(s => s.Logins.Any(login => login.LoginProvider == "Facebook")));