2016-08-02 15 views
1

Automapper v4.0のは、誰かが(特にマッパーコード)V5.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:

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

しかし、私は次のコードで郵便配達で結果を得る操作を行います:

EFコアはAutoMapperがでマッピングが何であるかを突出していないようです
 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は、この行がnotifications.Select(Mapper.Map ); – Reza