dto 使用 AutoMapper,c#,automapper"/>

首页 > 解决方案 > 无法映射字典dto 使用 AutoMapper

问题描述

我的数据模型和 dto 是-

public sealed class User
{
    public long UserId { get; set; }
    public string FullName { get; set; }
    public Dictionary<string, string> References { get; set; }
    public string Token { get; set; }
}

public sealed class ReferenceDto
{
    public string Type { get; set; }
    public string Id { get; set; }
}

public sealed class UserReferenceDto
{
    public long UserId { get; set; }
    public IEnumerable<ReferenceDto> References { get; set; }
    public string Token { get; set; }
}

我正在使用 AutoMapper nuget 版本 8.1.1。我已经创建了个人资料地图 -

public sealed class UserProfile : Profile //AutoMapper.Profile
    {
        public UserProfile()
        {
            CreateMap<ReferenceDto, KeyValuePair<string, string>>()
                .ConstructUsing(x => new KeyValuePair<string, string>(x.Type.Trim(), x.Id.Trim()));

            CreateMap<KeyValuePair<string, string>, ReferenceDto>()
                .ConstructUsing(x => new ReferenceDto { Type = x.Key.Trim(), Id = x.Value.Trim() });

            CreateMap<User, UserReferenceDto>(); // Not working
        }
    }

我能够实现映射

var references = _mapper.Map<IEnumerable<ReferenceDto>>(User.References)

但是当我尝试将用户模型映射到 UserReferenceDto

var response = _mapper.Map<UserReferenceDto>(User);

我正在获取 UserId 和 Token 映射但为 ReferenceDto 获取空集合。尝试了几种方法,但仍然得到空集合。

马上

var response = _mapper.Map<UserReferenceDto>(User);
response.References = _mapper.Map<IEnumerable<ReferenceDto>>(User.References);

为我工作,但我只想完成这项工作_mapper.Map<UserReferenceDto>(User);

标签: c#automapper

解决方案


推荐阅读