AutoMapper - 自定义映射

Nik*_*Nik 1 .net c# mapping automapper asp.net-core

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

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

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

return View(Mapper.Map<IEnumerable<ApplicationUserViewModel>>(_userRepository.GetAllUsersWithRoles()));
Run Code Online (Sandbox Code Playgroud)

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

Mapper.Initialize(config =>
{
   ...
   config.CreateMap<ApplicationUserViewModel, ApplicationUser>().ReverseMap();
});
Run Code Online (Sandbox Code Playgroud)

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

viewmodel.IsConnectedToFacebook = user.Logins.Any(login => login.LoginProvider == "Facebook");
Run Code Online (Sandbox Code Playgroud)

这里是视图模型:

public class ApplicationUserViewModel
{
   ...
   public bool IsConnectedToFacebook { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

非常感谢您的帮助!

尼克

Nik*_*Nik 6

我让它与以下内容一起工作:

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