Переписать код для Automapper v5.0 до v4.0

Automapper v4.0 был очень прост в использовании в методе, может кто-нибудь помочь переписать это для v5.0, пожалуйста (особенно код Mapper):

    public IEnumerable<NotificationDto> GetNewNotifications()
    {
        var userId = User.Identity.GetUserId();
        var notifications = _context.UserNotifications
            .Where(un => un.UserId == userId && !un.IsRead)
            .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>);
    }

ОБНОВЛЕНИЕ: кажется, что EF Core не проецирует то, с чем сопоставляется AutoMapper:

return notifications.Select(Mapper.Map<Notification, NotificationDto>);

Но я получаю результаты в Postman со следующим кодом:

        return notifications.Select(n => new NotificationDto()
        {
            DateTime = n.DateTime,
            Gig = new GigDto()
            {
                Artist = new UserDto()
                {
                    Id = n.Gig.Artist.Id,
                    Name = n.Gig.Artist.Name

                },
                DateTime = n.Gig.DateTime,
                Id = n.Gig.Id,
                IsCancelled = n.Gig.IsCancelled,
                Venue = n.Gig.Venue
            },
            OriginalVenue = n.OriginalVenue,
            OriginalDateTime = n.OriginalDateTime,
            Type = n.Type
        });

1 ответ

Решение

Если вы хотите продолжать использовать статический экземпляр - единственное изменение в инициализации mapper:

Mapper.Initialize(cfg =>
{
    cfg.CreateMap<ApplicationUser, UserDto>();
    cfg.CreateMap<Gig, GigDto>();
    cfg.CreateMap<Notification, NotificationDto>();
});

Также вы должны запускать этот код только один раз для каждого домена приложений (например, при запуске), а не каждый раз, когда вы звоните. GetNewNotifications,

Другие вопросы по тегам