我使用的是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方式,对它的构造帮助将不胜感激。
答案 0 :(得分:1)
类型转换器是您的朋友,可以将1映射到许多这样的对象。 让我知道是否需要我进一步讲解,并从您的模型中获得可行的示例。