c# - AutoMapper - 自定义映射

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

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

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

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

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

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

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

我主要是想告诉 AutoMapper,如果数据库中的 ApplicationUser 实体使用提供者 facebook 存储了针对它的登录信息,则自动将我的 ViewModel 类 (IsConnectedToFacebook) 的以下属性设置为 true。所以像这样想:

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

这里是 View 模型:

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

非常感谢您的帮助!

尼克

最佳答案

我得到它与下面的工作:

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

关于c# - AutoMapper - 自定义映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39930528/

相关文章:

c# - .net 核心身份,获取特定的注册错误条件

asp.net-core - ASP.NET Core 自定义脚手架 - Visual Studio 2019

c# - SqlDataReader 和数据库访问并发

c# - 解决 C# 中泛型中缺少 'new(parameters)' 的问题

c# - 在运行时动态扩展类型?

.NET 标准 2.0 数据.OleDb

c# - 如何将 serilog 消息模板与 loggly 一起使用

c# - .net 标准是否像 .net Core 一样跨平台?

c# - DateTime.ParseExact FormatException 字符串未被识别为有效的 DateTime

c# - 格式化 NodaTime 即时时包含尾随零?