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>();
});
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>();
});