您好我正在创建以下Web API方法,该方法返回数据传输对象。新版Auto Mapper的工作方式不同。以下是旧方法,有人可以帮助我采用新方法
这是使用旧AutoMapper
的AutoMapping示例public IEnumerable<NotiticationDto> GetNewNotifications()
{
var userid = User.Identity.GetUserId();
var userNotifications = _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<Notitication, NotiticationDto>();
});
return userNotifications.Select(Mapper.Map<Notitication>,<NotiticationDto>);
}
使用新方法自动映射
public IEnumerable<NotiticationDto> GetNewNotifications()
{
var userid = User.Identity.GetUserId();
var userNotifications = _context.UserNotifications
.Where(un => un.UserId == userid)
.Select(un => un.Notification)
.Include(n => n.Gig.Artist)
.ToList();
Mapper.Map<UserDto>(ApplicationUser);
Mapper.Map<GigDto>(Gig);
Mapper.Map<NotiticationDto>(Notitication);
});
}
我创建了一个名为MappingProfile
的类public class MappingProfile : Profile
{
public static void IntializeMappings()
{
Mapper.Initialize(cfg =>
{
cfg.CreateMap<ApplicationUser, UserDto>();
cfg.CreateMap<Gig, GigDto>();
cfg.CreateMap<Notitication, NotiticationDto>();
});
}
}
在Global.asax中,我编写了以下代码
Mapper.Initialize(cfg =>
{
cfg.CreateMissingTypeMaps = true;
cfg.AddProfile<MappingProfile>();
});
我在GetNewNotifications()web api方法中遇到编译时错误,例如在以下行Mapper.Map(ApplicationUser);说目标参数中提到的类型不能是类类型。这是期待的对象。另外,如何使用新方法返回第二个示例中的数据传输对象,就像我在第一个示例中所做的那样。如果有人能提出更好的实施方法吗?