映射器不包含 CreateMap C# 的定义


public IEnumerable<NotificationDto> GetNewNotifications()
{
var userId = User.Identity.GetUserId();
var notifications = _context.UserNotifications
.Where(un => un.UserId == userId)
.Select(un => un.Notification)
.Include(n => n.Gig.Artist)
.ToList();
Mapper.CreateMap<ApplicationUser, UserDto>();
Mapper.CreateMap<Gig, GigDto>();
Mapper.CreateMap<Notification, NotificationDto>();
return notifications.Select(Mapper.Map<Notification, NotificationDto>);
}

您能否帮助我正确定义此CreateMap并解释为什么以这种方式定义后会显示此消息?为什么找不到这种方法

正如 Ben 所指出的,使用 static Mapper 创建映射在版本 5 中已弃用。在任何情况下,您显示的代码示例的性能都会很差,因为您会在每个请求上重新配置映射。

相反,将映射配置放入AutoMapper.Profile,并在应用程序启动时仅初始化映射器一次

using AutoMapper;
// reuse configurations by putting them into a profile
public class MyMappingProfile : Profile {
public MyMappingProfile() {
CreateMap<ApplicationUser, UserDto>();
CreateMap<Gig, GigDto>();
CreateMap<Notification, NotificationDto>();
}
}
// initialize Mapper only once on application/service start!
Mapper.Initialize(cfg => {
cfg.AddProfile<MyMappingProfile>();
});

自动映射器配置

相关内容

  • 没有找到相关文章

最新更新