自动映射器-嵌套列表

时间:2018-06-22 14:35:22

标签: c# automapper

我使用的是AutoMapper,我相对较新,所以偶然发现了一个小的映射问题,希望社区可以提供帮助。

所以我有两个数据传输对象:

make dbg

和两个域实体

public class UserDto {
    public string UserName { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public List<CharacterDto> Characters { get; set; }
}

public class CharaterDto {
    public string CharacterName { get; set; }
    public string ClassName { get; set; }
    public int CharacterLevel { get; set; }
}

最终目标是能够通过域实体将DTO接收的数据保存到数据库中;但是,当涉及到“ UserDto”的字符列表时,我不知道如何使用AutoMapper正确映射它。我可以手动映射它,几乎没有问题...但是找不到任何有助于解释此问题的示例,也找不到任何可以帮助我更好地理解它的示例。

我尝试做类似的事情:

public class Character {
    public int ID { get; set; }
    public int UserId { get; set; }
    public string CharacterName { get; set; }
    public string ClassName { get; set; }
    public int CharacterLevel { get; set; }
}

public class User {
    public int ID { get; set; }
    public string UserName { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

但是,这似乎仅映射第一个条目,而不映射其他条目。我还考虑过像这样映射各个映射:

 CreateMap<UserDto, Character>()
     .ForMember(dest => dest.CharacterName, m => m.MapFrom(source => source.Characters[0].CharacterName));

但是无法弄清楚如何将字符集合与映射的CharacterDto相关联。我怀疑如果我在没有该关联的情况下运行代码,那么代码将自动理解 CreateMap<CharacterDto, Character>(); CreateMap<UserDto, Character>() .ForMember(?/*this section I cannot figure out*/) ,并使用适当的映射器来映射每个字符...如果必须手动执行此操作,则可以...但是如果有一种AutoMapper方式,对它的构造帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

类型转换器是您的朋友,可以将1映射到许多这样的对象。 让我知道是否需要我进一步讲解,并从您的模型中获得可行的示例。

https://stackoverflow.com/a/18096914/7911333

相关问题