私はしばらくこのことに執着していましたが、私は困惑しています。 Automapperは19オブジェクトをマップするのに4秒かかる。私のマシンでは、動作にはミリ秒かナノ秒かかります(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)); –