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>();
});
自动映射器配置