Mapper 不包含 CreateMap C# 的定义

Mapper does not contain definition for 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 所指出的,使用静态映射器创建地图在版本 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>();
});

AutoMapper Configuration