0

您好我正在创建以下返回数据传输对象的 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); 说目标参数中提到的类型不能是类类型。它正在等待对象。另外,如何使用我在第一个示例中所做的新方法在第二个示例中返回数据传输对象。另外,是否有人可以提出更好的实施方式?

4

0 回答 0