나는 잠시 동안 여기에 갇혀 있었고, 나는 혼란 스럽다. 오토 매퍼는 19 개의 개체를 매핑하는 데 4 초가 걸렸습니다. 작업은 내 컴퓨터에서 24 밀리 초 또는 나노 초가 걸립니다 (24GB RAM, 3.6Ghz i7).AutoMapper가 19 초 객체를 매핑하는 데 4 초 걸리는 것
이것은 매핑 호출입니다.
var messageDtos = AutoMapperConfig.Mapper.Map<List<Message>, List<MessageDTO>>(messages);
이 여기에 해당 객체가 내 Automapper의 설정
public static class AutoMapperConfig
{
public static IMapper Mapper;
public static void Configure()
{
MapperConfiguration config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<User, UserDTO>();
cfg.CreateMap<UserDTO, User>();
cfg.CreateMap<ConversationUser, ConversationUserDTO>();
cfg.CreateMap<ConversationUserDTO, ConversationUser>();
cfg.CreateMap<Conversation, ConversationDTO>();
cfg.CreateMap<ConversationDTO, Conversation>()
.ForMember(dest => dest.ConversationUsers, opt => opt.MapFrom(src => src.ConversationUsers));
cfg.CreateMap<Message, MessageDTO>();
cfg.CreateMap<MessageDTO, Message>();
});
Mapper = config.CreateMapper();
}
}
입니다. 그들은 미친 것이 아닙니다. 여기
public class Message
{
public int MessageId { get; set; }
public virtual Conversation Conversation { get; set; }
public virtual User User { get; set; }
public string Text { get; set; }
public DateTime CreateDate { get; set; }
public virtual ICollection<MediaMessage> MediaMessages { get; set; }
public virtual ICollection<ReadReceipt> ReadReceipts { get; set; }
public Message()
{
CreateDate = DateTime.Now;
}
}
public class MessageDTO
{
public int MessageId { get; set; }
public virtual ConversationDTO Conversation { get; set; }
public virtual UserDTO User { get; set; }
public string Text { get; set; }
public DateTime CreateDate { get; set; }
public virtual ICollection<MediaMessage> MediaMessages { get; set; }
public virtual ICollection<ReadReceipt> ReadReceipts { get; set; }
public string Type { get; set; }
public string TransferGuid { get; set; }
}
public class ConversationDTO
{
public int ConversationId { get; set; }
public virtual UserDTO Owner { get; set; }
public virtual DateTime CreateDate { get; set; }
public virtual ICollection<ConversationUserDTO> ConversationUsers { get; set; }
public virtual Image Image { get; set; }
public virtual Message RecentMessage { get; set; }
}
public class UserDTO
{
public int UserId { get; set; }
public string Name { get; set; }
public DateTime CreateDate { get; set; }
public virtual PhoneNumber PhoneNumber { get; set; }
public virtual string TwitterHandel { get; set; }
public virtual Image Image { get; set; }
}
는 Automapper이 걸리는 시간,이 제공 얼마나 통찰력 확실하지, 난 그냥이를 알아 내기 위해 어제 dotrace을 설치 보여주는 점 추적의 스크린 샷이다.

이 줄이 문제가 될 것이라고 생각합니다 .ForMember (dest => dest.ConversationUsers, opt => opt.MapFrom (src => src.ConversationUsers)); –