简体   繁体   中英

Automapper - Nested Lists

I am working with AutoMapper, which I am relatively new with, and I stumbled upon a small mapping problem I was hoping the community could assist with.

So I have two data transfer objects:

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; }
}

and two Domain Entities

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; }
}

The end goal is to be able to save the data taken in by the DTOs into the database via the Domain Entities; however, when it comes to typing up the list of Characters for 'UserDto', I do not know how to map this properly with AutoMapper. I can map it manually with little to no problems... but I can't find anything that helps to explain this or any examples that would help me understand it better.

I have tried doing things like:

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

However, this seems to only map the 1st entry and not the others. I have also considered mapping the individual mappings like so:

 CreateMap<CharacterDto, Character>();
 CreateMap<UserDto, Character>()
     .ForMember(?/*this section I cannot figure out*/)

But can't figure out how to associate the the collection of characters to the mapped CharacterDto. I doubt that if I run the code without that association, the code is going to automatically understand that for each character in characters , map each character using the appropriate mapper... If I must manually do this, I can... but if there is an AutoMapper way, any help constructing it would be greatly appreciated.

Type converters are you friend here for mapping 1 to many like this. Let me know if you need me to go further and get you a working example from your models.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM