2016-08-02 4 views
1

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

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

UPDATE: кажется, что EF ядро ​​не проецировать, что AutoMapper является отображение с:

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

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

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

ответ

0

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

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

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

+0

Линия mapper.map, похоже, не работает. Похоже, это нужно переписать тоже – Reza

+0

Есть ли у вас какие-либо ошибки? отлично работает для меня –

+0

Intellisense жалуется на уведомления о возврате этой строки. Выберите (Mapper.Map ); – Reza