实现新版AutoMapper的问题

时间:2016-11-14 23:18:54

标签: c# asp.net-mvc asp.net-web-api automapper-5

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

0 个答案:

没有答案